Прямой, обратный, дополнительный коды чисел



В ЭВМ с целью упрощения арифметических операций применяют специальные коды для представления чисел. При помощи этих кодов:

• автоматически определяется знак результата;

• операция вычитания сводится к арифметическому сложению кодов чисел;

• упрощается операционная часть ЭВМ.

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

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

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

Обратный кодРобр(х) получается из прямого кода по следующему правилу

.

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

Дополнительный код Рдоп(х) образуется следующим образом:

.

Из выражения видно, что дополнительный код положительного числа совпадает с прямым кодом, а для отрицательного числа получается инверсией всех значащих разрядов и добавлением единицы к младшему разряду результата. Дополнительный код может быть получен из обратного кода путём прибавления 1 к младшему разряду обратного кода (естественно, с учётом переносов между разрядами).

Итак:

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

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

Пример:

1). Получить обратный, дополнительный коды числа 26. Для записи кода выделен один байт:

х = 2610 = 110102

Рпр(х) = 0’0011010 – прямой код;

Робр(х )= 0’0011010 - обратный код;

Рдоп(х)= 0’0011010 - дополнительный код.

Данное число положительное, поэтому обратный и дополнительный коды совпадают с прямым кодом числа.

2). Получить обратный, дополнительный коды числа -13. Для записи кода выделен один байт:

х = -1310 = -11012

Рпр(х)=1’0001101 – прямой код;

Робр(х)=1’1110010 - обратный код (инверсия положительного кода, т.к. данное число отрицательное);

Рдоп(х)=1’1110011 - дополнительный код (к младшему разряду обратного кода прибавляется единица, т.к. данное число отрицательное).

3). Получить обратный, дополнительный коды числа -1001102. Для записи кода выделен один байт:

х = -1001102

Рпр(х)=1’0100110 – прямой код;

Робр(х)=1’1011001 - обратный код;

Рдоп(х)=1’1011010 - дополнительный код.


Дата добавления: 2019-09-08; просмотров: 225; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!