Для получения дополнительного k-разрядного кода отрицательного числа необходимо следующее:

  • Модуль числа представить прямым кодом в k двоичных разрядах.
  • Значения всех бит инвертировать (все нули заменяются на единицы, а единицы на нули), таким образом получается k-разрядный обратный код исходного числа.
  • К полученному обратному коду, трактуемому как k-разрядное неотрицательное двоичное число, прибавить единицу.

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

При представлении отрицательного числа m дополнительным кодом в самом левом (знаковом) бите записывается знак отрицательного числа (единица), а в остальных разрядах записывается число 2k-1 — |m|. Если это число рассматривать как положительное, то максимальное по модулю отрицательное число, которое можно представить в k— разрядах, равно -2k-1.

Описанный выше алгоритм получения дополнительного кода для отрицательного числа знаковую единицу в левом разряде образует автоматически при |m| ≤ 2k-1. Если же 2k-1 < |m| < 2k, то попытка реализации данного алгоритма приведет к тому, что в левом разряде будет находиться цифра 0. Это соответствует компьютерному представлению положительных чисел, что неверно. Именно поэтому в определении дополнительного кода на значение наложено ограничение.

Для полноты рассмотрения получим дополнительно 8-разрядный код для чисел -128 (минимальное представимое число), -127 (число, обратное максимально представимому) и -0.

Число
-128
-127
-0
Прямой код модуля
10 000 000
01 111 111
00 000 000
Обратный код
01 111 111
10 000 000
11 111 111
Дополнительный код
10 000 000
10 000 001
00 000 000

Отметим, что для числа -128 прямой код совпадает с дополнительным, а дополнительный код числа -0 совпадает с обычным нулем. Однако при преобразовании обратного кода для числа -0 в его дополнительный код правила обычной двоичной арифметики оказываются нарушенными, а именно:

1111 11112 +1 = 1 0000 00002 = 2k

Но, поскольку описанные действия производятся в k двоичных разрядах, левая единица результата оказывается лишней и игнорируется.

Отметим еще раз, что в k-разрядной целочисленной компьютерной арифметике 2k = 0.

content

Share
Published by
content

Recent Posts

Магнитное поле тока. Магнитные силовые линии

Разница между энергией электрического поля и энергией магнитного поля примерно такая же, как между энергией,…

12 месяцев ago

Постоянные магниты

Когда-то легендарный пастух Магнес, нашел природный магнитный камень, притягивающий железо. В последствии этот камень назвали магнетит или магнитный…

1 год ago

Соединение конденсаторов

В электрических цепях применяются различные способы соединения конденсаторов. Соединение конденсаторов может производиться: последовательно, параллельно и последовательно-параллельно (последнее иногда называют смешанное соединение конденсаторов). Существующие…

1 год ago

Обозначение конденсаторов

Обозначение конденсаторов на схемах определено ЕСКД ГОСТ 2.728-74. Обозначения условные графические в схемах. Резисторы, конденсаторы. Итак,…

1 год ago

Виды конденсаторов

Узнав, что же такое конденсатор, рассмотрим, какие бывают виды конденсаторов. Итак, виды конденсаторов можно классифицировать по…

1 год ago

Энергия поля конденсатора

Вся энергия заряженного конденсатора сосредотачивается в электрическом поле между его пластинами. Энергию, накоп­ленную в конденсаторе, можно определить…

1 год ago