Операции и флаги (1110644), страница 2
Текст из файла (страница 2)
Реализация сложения и вычитания по модулю 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.