В итоге получается

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

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

 

Прямой код

Прямой код двоичного числа содержит цифровые разряды, слева от которых записывается знаковый разряд, который выполняет не роль знака, а роль значащей цифры числа. Например, целое положительное двоичное число х=+11010 в прямом коде будет иметь вид = 011010, а отрицательное число у=–10011 будет иметь вид = 110011. В этих кодах знаковые разряды играют роль значащих цифр.

Обратный код

Обратный код образуется из прямого кода путем замены единиц и нулей в цифровых разрядах на их противоположные значения, то есть единицы заменяются нулями, а нули – единицами. Например, число у= –10011 имеет прямой код = 110011, то его обратный код будет иметь вид =101100. Здесь знаковый разряд не меняет своего значения, а цифровые разряды заменены противоположными значениями.

 

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

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

То есть, если обратный код числа у = –10011 представляет собой

= 101100,

то дополнительный код будет иметь вид

101100

+

1

101101

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

– при использовании обратного кода, возникающая единица переноса из знакового разряда прибавляетсяк младшему разряду суммы,

– при использовании дополнительного кода, возникающая единица переноса отбрасывается.

Например, требуется сложить два числа

х = = и у= .

Прямой код для положительного числа х имеет вид

Прямой код для отрицательного числа у

Обратный код для отрицательного числа у

Дополнительный код для отрицательного числа у

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

0110

+

1100

+

1 перенос единицы со знакового разряда с добавлением в младший разряд суммы.

В результате получается

х + у = 0011 =

Операция сложения с использованием дополнительного кода

0110

+

1101

10011

отбрасывание

х + у = 0011= .

Это отвечает истинному результату алгебраического сложения 6 – 3 = 3.

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

Алгебраическое сложение с использованием обратного кода отрицательного числа х

1001

0011

.

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

Алгебраическое сложение с использованием дополнительного кода отрицательного числа х.

1010

0011

Здесь отрицательное слагаемое х использовано в дополнительном коде, поэтому и результат воспринимается в дополнительном коде. Путь перевода результата в десятичную систему счисления аналогичен предыдущему случаю.

Следует иметь в виду, что для заданной длины разрядной сетки, дополнительным кодом представляется на единицу больше отрицательных чисел, чем положительных. Например, в 8-разрядной сетке можно представить наибольшее положительное число +127 в прямом коде как 01111111 и наименьшее отрицательное число –128 в дополнительном коде как 10000000. По этим причинам для представления отрицательных чисел в компьютере чаще используется дополнительный код.