Представление отрицательных чисел

Один из способов выполнения операции вычитания – замена знака вычитаемого на противоположный и прибавление его к уменьшаемому:

А–В=А+(–В).

Таким образом операцию арифметического вычитания заменяют операцией алгебраического сложения, которая и становится основной операцией в ЭВМ.

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

Прямой код числа А=–0,а1а2...аn– машинное изображение этого числа в виде [А]пр=1,а1а2...аn. Из определения следует, что в прямом коде все цифровые разряды отрицательного числа остаются неизменными, а в знаковой части записывается единица. Например, если А=–0,101110, то [А]пр=1,101110. Положительное число в прямом коде не меняет своего изображения. Например, если А =0,110101 ,то [А]пр=0,110101.

В прямом коде в разрядную сетку цифрового автомата можно записать следующее максимальное по абсолютному значению число Апр max=0,11...1=1–2-n, где n – количество разрядов разрядной сетки цифрового автомата.

Диапазон изменения машинных изображений для прямого кода лежит в пределах

Ранее прямой код был использован для записи чисел в разрядной сетке цифрового автомата.

Правила преобразования чисел в прямой код можно сформулировать так:

Дополнительный код числа А=–0,а1а2...аn– такое машинное изображение этого числа [А]д=1, b1b2...bn, для которого bi= 0 при аi= 1, и bi= 1 при ai= 0, за исключением последнего значащего разряда, для которого bk=1 при ak=1. Например, число А=–0,101110 запишется в дополнительном коде так: [А]д= 1,010010.

Дополнительный код является математическим дополнением основания системы счисления:

(2.4)

где |А| – абсолютное значение числа А.

Так как положительные числа не меняют своего изображения в дополнительном коде, то правила преобразования в дополнительный код можно записать следующим образом:

Максимальное дополнительное число, представляемое при этом, равно (1–2-n).

Наибольшее отрицательное число, которое можно записать в дополнительном коде, определим следующим образом. Предположим, что наибольшее отрицательное число А1=–0,11...11. Тогда изображение этого числа в дополнительном коде [А1]д=1,00...01. Если к числу A1добавить единицу в самый младший разряд, то в результате получим число –1,00...0. Преобразовав это число по формальным правилам, получим [А]д min=1,00...0.

Следовательно, диапазон изменения машинных изображений чисел для формы представления с запятой, фиксированной перед старшим разрядом, в дополнительном коде

–1  |А|д (1 – 2-n).

Машинные изображения чисел – всегда целые числа. При этом наибольшее положительное число состоит из целой части, все разряды которой равны единице, и знакового разряда, равного нулю (например, в случае 16 двоичных разрядов (два байта) максимальное положительное число имеет вид 0111111111111111, т. е. равно 215–1); наибольшее отрицательное число состоит из целой части, все разряды которой равны нулю, и знакового разряда, равного единице, т. е. имеет вид 1000000000000000. В этом случае говорят о форме представления чисел с фиксированной точкой. Таким образом, соотношение (2.4) для представления целых чисел в дополнительном коде принимает вид

(2.5)

где k – количество разрядов в целой части машинного изображения числа. Формула (2.4) – частный случай формулы (2.5) при k = 0 .

Обратный код числа А =–0,а1а2...аn—такое машинное изображение этого числа [А]об=1,с1с2…сn, для которого сi=0, если Ai=1, и ci=1, если аi= 0. Из определения следует, что обратный код двоичного числа является инверсным изображением самого числа, в котором все разряды исходного числа принимают инверсное (обратное) значение, т. е. все нули заменяются на единицы, а все единицы – на нули. Например, если А =–0,101110, то [А]об=1,010001. Для обратного кода чисел, представленных в форме запятой, фиксированной перед старшим разрядом, справедливо соотношение

(2.6)

где |А| – абсолютная величина А; n – количество разрядов после запятой в изображении числа.

Правила преобразования чисел в обратный код можно сформулировать следующим образом:

Сравнив выражения (2.4) и (2.6), видим, что

(2.7)

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

Пример. Найти обратный и дополнительный коды числа А = –0,1110002.

Решение. Используя определение обратного кода, получим [А]об=1,000111.

Для нахождения дополнительного кода числа добавим единицу в младший разряд его изображения:

Ответ: [А]об=1,000111; [А]д=1,001000.

В обратном коде можно изображать максимальное положительное число [A]обmax=0,11…1=1–2-nи наибольшее отрицательное число [А]обmin=–0,11…1=–(1–2-n), записываемое в виде 1,00…0.

При проектировании цифровых автоматов необходимо учитывать неоднозначное изображение нуля в обратном коде: +0 изображается 0,00…0, –0 изображается 1,11…1.

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

Двоичная арифметика

Наши рекомендации