Программирование на JAVA

Теперь рассмотрим другую интерпретацию окружности mod 16. Предположим, что значения из диапазона от 0 до 15 представлены в соответствии с двоичной сис­темой счисления 4-битовыми двоичными векторами: 0000, 0001,..., 1111. А двоич­ные векторы, как видно на рис. 4.3, б, представляют числа со знаком от -8 до +7, что соответствует системе дополнения до двух (рис. 4.1).

Давайте применим графическую технологию сложения по модулю 16 к про­стому примеру сложения чисел +7 и -3. В системе дополнения до двух эти числа представлены как 0111и1101 соответственно. Для того чтобы их сложить, найди­те на окружности число 0111 и переместитесь на 1101 шагов по часовой стрелке (то есть на 13 шагов — сосчитайте количество делений от 0 до 1101). Вы окаже­тесь на делении 0100, представляющем ответ, а именно +4 (рис. 4.2, б). Если вы выполните эту операцию путем сложения пар разрядов справа налево, результат будет таким:

   0111

+ 1101

1 0100

Перенос

Как видите, для получения правильного результата мы проигнорировали пе­ренос из четвертого разряда. В этом и состоит суть сложения по модулю. Переме­щаясь по кругу (рис. 4.2, 6), мы возвращаемся не к значению 10000, следующему за значением 1111, а к значению 0000.


<< назад вперед >>