А.А. Вылиток - Операции над битовыми наборами. Установка флагов и проверка условий (1108621), страница 2
Текст из файла (страница 2)
В случае op1 ≥ op2справедливо равенство OF = SF. Таким образом, можно утверждать:op1 <зн op2 ⇔ OF ≠ SF,op1 ≥зн op2 ⇔ OF = SFПодытожим полученные результаты в виде таблицы.Соотношениеop1 op2=Критерий истинности данного соотношения в терминах значений флаговпосле операции вычитания op1 − op2 по модулю 2kдля чисел со знакомдля чисел без знакаZF = 1ZF = 13)В «бесполезности» остальных флагов можно было бы убедиться, включив и их в рассмотрение, ноэто заняло бы больше места.4)Рассмотрим, как и в беззнаковом случае, только отношения < и ≥ — остальные можно выразить припомощи логических связок.5)Читателю предлагается самостоятельно доказать, что именно такие значения флагов возможны вкаждом из рассматриваемых случаев.5≠ZF = 0ZF = 0<OF ≠ SFCF = 1≥OF = SFCF = 0>(OF = SF) ∧ (ZF = 0)(CF = 0) ∧ (ZF = 0)≤(OF ≠ SF) ∨ ( ZF = 1)(CF = 1) ∨ ( ZF = 1)4.
Реализация сложения и вычитания по модулю N с помощью«механики часов» (на примере N = 3)Покажем, как можно механически реализовать сложение и вычитание с помощью«циферблата» и двух часовых стрелок. По окружности циферблата равномернорасположим 2N чисел. Первую (часовую) стрелку будем изображать более широкой, чемвторую (минутную). Заметим, что от пользователя данного механизма не требуетсяумения складывать или вычитать числа, прибавлять единицу и т.п.Для сложения: первую стрелку установить на ноль, вторую — на второеслагаемое.
Зафиксировать угол между стрелками и совместить первую стрелку с первымслагаемым, тогда вторая укажет на результат сложения. Этот прием годится и для чиселсо знаком (в дополнительном коде), и для чисел без знака.Пример для чисел без знака: 1 + 2 = 300011171100000011101726501040Пример для чисел со знаком: −3 + 1 = −212501100611310061110013410010001110010−1110000−10102−300101−21101−33−41010110102−23−4101111100011100Для вычитания: первую стрелку установить на ноль, вторую — на вычитаемое.Зафиксировать угол и совместить вторую стрелку с уменьшаемым. Тогда первая стрелкаукажет результат вычитания.Пример: 0 − 2 = −2 (для знаковых чисел)или 0 − 2 = 6 (беззнаковые вычитаем по модулю 8)0000001117(−1)110001025(−3)0101001110 6(−2)25(−3)34(−4)01100107(−1)16(−2)10111110101034(−4)011100Задача.
Сформулировать правила установки флагов с помощью механики часов.7.