Прямой, обратный, дополнительный коды чисел
В ЭВМ с целью упрощения арифметических операций применяют специальные коды для представления чисел. При помощи этих кодов:
• автоматически определяется знак результата;
• операция вычитания сводится к арифметическому сложению кодов чисел;
• упрощается операционная часть ЭВМ.
Среди арифметических операций основными являются операции сложения и вычитания, поскольку помимо самостоятельного значения, они лежат в основе операций умножения и деления, соответственно.
С целью удобства технической реализации операция вычитания заменяется операцией сложения. При этом исходные операнды (числа, участвующие в операции) должны быть представлены в обратном или в дополнительном коде.
Прямойдвоичный код Рпр(х) - это такое представление двоичного числа х, при котором знак «плюс» кодируется нулем в старшем разряде числа, а знак «минус» - единицей. При этом старший разряд называется знаковым. Сложение в прямом коде не вызывает затруднений, когда у слагаемых одинаковые знаки: сложить модули и сумме присвоить знак слагаемых. При вычитании чисел в прямом коде нужно сначала определить больший модуль, от него отнять меньший и результату присвоить знак большего модуля.
Обратный кодРобр(х) получается из прямого кода по следующему правилу
.
Из приведенного выражения видно, что обратный код для положительных чисел совпадает с прямым кодом. Чтобы представить отрицательное двоичное число в обратном коде нужно оставить в знаковом разряде 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!