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

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

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

Число Прямой код Обратный код Дополнительный код
-3 1011 1100 1101
-2 1010 1101 1110
-1 1001 1110 1111
0 0000
1 0001
2 0010
3 0011

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

Назад