Дополнительный код
Дополнительным называется код, в котором для положительного числа в знаковом разряде пишется "0", в цифровых - модуль числа, а для отрицательного в знаковом разряде пишется "1", в цифровых - дополнение числа до единицы.
Если некоторое X- = -0,x1x2...xn нужно представить в дополнительном коде, то
где: 1 - 0,x1x2...xn = 0, Z1Z2...Zn
Диапазоны представленных чисел:
Х+ min = 0,0...0 - положительный нуль
Х+ max = 0,11...1 = 1-2-n - максимальное положительное число.
X- min = 1,11...1 = 2-2-n - минимальное отрицательное число
X- max = 1,0...0 - наибольшее(по модулю) отрицательное число
Таким образом, нуль имеет единственное представление.
В самом деле, так как
X-X = [X+]дк + [X-]дк = 0, то в дополнительном коде: |X+| + 10 - |X-| = 10, если в разрядной сетке ЭВМ нет второго знакового разряда, то это переполнение теряется, и в знаковом разряде будет только нуль.
Важная особенность в получении дополнительного кода отрицательного числа состоит в следующем:
Таким образом, для записи дополнительного кода отрицательного числа необходимо в знаковом разряде поставить единицу, проинвертировать все цифровые разряды числа и прибавить единицу в младший разряд. Это также правило перевода из дополнительного кода в прямой код.
Рассмотрим на примерах выполнение операции сложения двух чисел с разными знаками.
Возможны следующие случаи:
- X+ + Y+ = S+
- X+ + Y- = S+
- X+ + Y- = S-
- X- + Y- = S-
Необходимо помнить, что нельзя, выполняя операции, выходить за диапазон представляемых в данной разрядной сетке чисел, записанных с фиксированной запятой.
Положим n = 3, 1 - знаковый разряд и 2 - цифровых.
-
X+ = 0,10 Y+ = 0,01
В дополнительном коде
То есть, нет никаких особенностей.
-
X+ = 0,10 Y- = -0,01
В дополнительном коде
Переполнение теряется и получается верный результат.
-
X+ = 0,01 Y- = -0,11
В дополнительном коде
-
X- = -0,10 Y- = -0,01
В дополнительном коде
Возникающее переполнение теряется и общий результат отрицательный.
Таким образом, важной особенностью дополнительного кода является то, что знаковый разряд в процессе выполнения операции рассматривается совместно с цифровыми. Возникающие переносы теряются и не влияют на результат операции.