Дополнительный код и его применение

При выполнении арифметических действий результат может получаться не только положительным, но и отрицательным. Как представить знак "-" в схемах машины, если в них фокусируется лишь два состояния - 0 или 1? Договорились знак числа определять самым левым, старшим битом. Если число положительное, то знаковый разряд равен 0, а если отрицательное - 1. Решение о выделении знакового разряда, конечно, сказалось на максимальных величинах представляемых чисел. Максимальное положительное число в 16 разрядах равно +32767, а отрицательное -32768.

Оказалось, что наиболее удобно оперировать двоичными числами в дополнительном коде. Единственное усложнение состоит в том, что необходимо для получения дополнительного кода прибавить единицу к инвертированному числу, т.е. к обратному коду этого числа. (Обратный код в двоичной системе получают путем изменения в числе нулей на единицы, единиц - на нули. Эта операция носит название инвертирование.)

Посмотрим на нижеприведенную таблицу.

Десятичное число Прямой код Обратный код Дополнительный код
-8 - - 1000
-7 1111 1000 1001
-6 1110 1001 1010
-5 1101 1010 1011
-4 1100 1011 1100
-3 1011 1100 1101
-2 1010 1101 1110
-1 1001 1110 1111
0 1000 1111 0000
0000 0000
1 0001 0001 0001
2 0010 0010 0010
3 0011 0011 0011
4 0100 0100 0100
5 0101 0101 0101
6 0110 0110 0110
7 0111 0111 0111

В этой таблице приведены десятичные числа, их двоичные представления в различных формах. Интересным в этой таблице является вот что. Если начать счет с числа 1000(-8) и двигаться вниз по столбцам, то в дополнительном коде каждое последующее число получается прибавлением единицы к предыдущему числу без учета переноса за пределы четвертого разряда. Так просто эту операцию в прямом и обратном кодах не осуществить. Эта особенность дополнительного кода и явилась причиной предпочтительного применения его в компьютерах.

Содержание