Представление двоичных чисел с учетом знака

Операцию вычитания двух положительных А и В чисел можно рассматривать как операцию алгебраического сложения чисел с разными знаками А – В = А + (). Поэтому для замены арифметической операции вычитания операцией алгебраического сложения необходимо каким-то образом представить число с учетом знака. Для представления чисел со знаком используются прямой, обратный и дополнительный коды. Так как кодирование положительных чисел сводится к записи нуля в старший дополнительный разряд двоичного числа, основная особенность этих кодов состоит в том, что все три кода для положительных чисел совпадают. Например, для 3-разрядного положительного числа А = 110 прямой, обратный и дополнительный коды имеют вид 4-разрядного числа: А = Л()бр = Лдо|| = 0110.

Поэтому в дальнейшем основное́ внимание уделено представлению отрицательных двоичных чисел в виде "-разрядных кодов. Для простоты рассматриваются целые числа.

Определим диапазон значений чисел, представляемых (п – 1 )-разрядным двоичным кодом с учетом того, что п-й разряд отводится под знак числа. В разрядную сетку цифрового устройства можно записать следующее максимальное по абсолютному значению (и – 1)-разрядное двоичное число |Л|тах = 11...1 = 2"“1 – 1, где п – 1 – количество значащих разрядов разрядной сетки. Следовательно, диапазон изменения значений целых чисел лежит в пределах ~(2"~1 1) < <А<( 2"-' – 1), т.е.

Прямой код. Для представления целого отрицательного двоичного числа А = -яг_2ап-з–aiag в ПРЯМ0М коде достаточно в дополнительный знаковый разряд записать единицу, сохранив все цифровые разряды неизменными: Лпр = п 2ап З...а{а0. Например, если А = -101, то Лпр = 1101. Правила преобразования целых чисел в прямой код имеют вид

где |Л| – модуль числа А.

Обратный код. Для получения обратного кода целого двоичного отрицательного числа необходимо проинвертировать все цифровые разряды, т.е. все нули заменить на единицы, а все единицы – на нули, и в дополнительный старший разряд записать единицу:. Например, если А = -101, то. Отметим, что стоящие впереди незначащие нули модуля числа также инвертируются: для А = -001 обратный код имеет вид

Правила преобразования целых чисел в обратный код имеют вид

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

Правила преобразования целых чисел в дополнительный код имеют вид

Например, для числа А = -101 получаем Лдоп = 1010 + 1 = 1011; для числа А = -001 получаем Лдоп =1110+1 = 1111.

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

Таблица 2.5

Числа А

Прямой код

Апр

Обратный код

Аобр

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

Адоп

Целые

>0

А

А

А

<0

1А

1А

1А + 1

101

0101

0101

0101

-101

1101

1010

1011

+000

0000

0000

0000

-000

1000

1111

0000

С фиксированной точкой

>0

А

А

А

<0

0,101

0101

0101

0101

-0,101

1101

1010

1011

+0,000

0000

0000

0000

-0,000

1000

1111

0000

 
< Пред   СОДЕРЖАНИЕ     След >