Одним из способов выполнения операции вычитания является замена знака вычитаемого на противоположный и прибавление его к уменьшаемому:
A – B = A + (–B).
Этим операцию арифметического вычитания заменяют операцией алгебраического сложения. Последняя и становится основной операцией.
Для машинного представления отрицательных чисел используют коды прямой, дополнительный, обратный.
Прямой код числа A = – 0, a1 a2 ... an – машинное изображение этого числа
в виде [A]пр = 1, a1 a2 ... an.
Из определения следует, что в прямом коде все цифровые разряды остаются
неизменными, а в знаковой части записывается единица. Например, если A
= – 0,101110, то
[A]пр = 1,101110.
Положительное число в прямом коде не меняет своего изображения. Например, если A = 0,110101, то [A]пр = 0,110101.
Дополнительный код числа A = – 0, a1 a2 ... an – машинное изображение этого числа [A]д = 1, а1, а2 ... аn, для которого аi = 0, если ai = 1, и аi = 1, если ai = 0, за исключением последнего значащего разряда, для которого аk = 1 при ak = 1.
Например, число A = – 0,101110 запишется в дополнительном коде так: [A]д = 1,010010.
Дополнительный код является математическим дополнением до основания системы счисления:
| A | + [A]д = q,
где | A | – абсолютное значение числа A.
Обратный код числа A = – 0, a1 a2 ... an – такое машинное изображение этого числа [A]об = 1, а1, а2 ... аn, для которого аi = 0, если ai = 1, и аi = 1, если ai = 0.
Из определения следует, что обратный код двоичного числа является инверсным изображением самого числа, в котором все разряды исходного числа принимают инверсное (обратное) значение, т. е. все нули заменяются на единицы, а все единицы – на нули, например если A = – 0,101110, то [A]об = 1,010001.
Следовательно, для обратного кода чисел, представленных в форме с запятой, фиксированной перед старшим разрядом, справедливо соотношение
| A | + [A]об = q – q^-n,
где | A | – абсолютная величина числа A; n – количество разрядов после запятой в изображении числа.