Прямой, обратный и дополнительный коды
Для выполнения в ЭВМ арифметических операций необходимо использовать специальное кодирование отрицательных чисел. Для представления знака числа требуется введение дополнительного знакового разряда. Знак минус принято кодировать символом «1», а знак плюс – символом «0».
Прямой код. Прямой код целого n-разрядного двоичного числа задается соотношением:
где – модуль числа
, а прямой код
(для наглядности знаковый разряд отделяется точкой). Числу 0 может быть приписан любой знак. Таким образом, прямой код числа
произвольного знака получается добавлением к модулю числа
знакового разряда
, значение которого и определяет знак числа.
То есть, имеем: знаковый разряд располагается слева от числа и отделяется от последнего точкой, например: +5 = 0.101;-5=1.101.
Прямой код упрощает умножение чисел, так как в этом случае для вычисления произведения необходимо перемножить модули чисел и
и вычислить знак произведения
, который определяется только значениями знаков чисел
и
. Знак произведения
, где
.
Обратный код. Обратный код целого n-разрядного двоичного числа определяется соотношением:
где – модуль числа
,
Число 0 в обратном коде имеет два представления: 0.0…00 – положительный и 1.1…11 – отрицательный нули. В (n+1)-разрядных (с учетом знакового разряда) прямом и обратном кодах могут быть представлены числа
То есть, имеем: обратный код двоичного отрицательного числа получается из прямого кода равного ему положительного числа инвертированием значений всех его разрядов. Например, обратный код числа -510=1.1012 есть 1.010.
Дополнительный код. Пусть требуется найти разность двух целых положительных n-разрядных чисел:
и
,
где ,
.
Так как разность , то вычитание эквивалентно сложению с отрицательным числом
. В двоичной системе счисления:
Максимальное значение X получается при для всех
:
(6.2)
Таким образом, и
. Разность
(6.3)
где . Так как значения
, то
. Положительное число
называется дополнением Y до 2n. Из соотношения (6.3) следует, что
, т. е. вычитание сводится к сложению, но результат надо скорректировать на 2n (вычесть из разности число 2n). Из выражения (6.2) следует, что
поэтому
так как . Поскольку
, то
где
Разность (6.3) можно представить в виде:
(6.4)
где ,
Величина называется дополнительным кодом положительного числа X (совпадает с прямым кодом), а величина
– дополнительным кодом отрицательного числа -Y. Здесь значение n-го разряда определяет знак числа (0 – число положительное, 1 – число отрицательное). Из (6.4) следует, что знаковый разряд имеет вес -2n.
Если число Y может иметь любой знак, то дополнительный код
(6.5)
где ,
.
Из определения (6.5) следуют правила получения дополнительного кода отрицательных чисел (правила преобразования прямого кода в дополнительный). Для этого необходимо: записать модуль отрицательного числа
в двоичной системе счисления; взять инверсию от каждого разряда числа, т.е. вычислить число
; сложить полученное число
с единицей, т.е. вычислить число
; записать 1 в n-й разряд.
Дата добавления: 2015-04-25; просмотров: 963;