Обратный код
Обратный код предполагает, что при кодировании числа и выполне- нии операций с кодами используются одинаковые правила обработки всех разрядов, включая знаковый. Обратный n-разрядный двоичный код
– это код образованный по правилу:
А2 при А2 >0
(А2)обр =
(2n-1) - |A2| при А2<0
Операция вида (2n – 1) - |A2| дает дополнение до наибольшего числа без знака, представимого в в n-разрядной сетке. Другими словами, кодиро- вание числа можно выполнить следующим образом:
· Для положительного числа в n-разрядную сетку записывается его двоичное представление.
· Для отрицательного числа в n-разрядную сетку записывается раз- ность между наибольшим числом без знака и модулем кодируемого числа.
В обоих случаях значение знакового разряда будет получено автомати- чески.
Пример: Получить обратные коды чисел А[10] = 4, В[10] = -6 для n = 5.
Кодируем отрицательное число
1. |В[10]| = 6
2. |В[2]| = 00110
3. (В[2])обр= 1 1 1 1 1 Это инверсия модуля
- 0 0 1 1 0
1 1 0 0 1 32
(В[2])обр= Знак ® 1
Кодируем положительное число
1. A[10] = 4
2. A[2] = 00100
3. (А[2])обр=
Знак ® 0
![]() |
Замечания:
v Операция дополнения для двоичного обратного кода эквивалентна инверсии всех разрядов. Инверсия удобна для реализации в операци- онном устройстве.
v Если длина разрядной сетки кратна 4, дополнение удобно вычислять в шестнадцатеричной системе счисления. Такая разрядная сетка ха- рактерна для большинства ЭВМ.
v Если длина разрядной сетки кратна 3, дополнение удобно вычислять в восьмеричной системе счисления. Такая разрядная сетка не харак- терна для ЭВМ. Однако для мини-ЭВМ с 16-ти разрядной сеткой при документировании программ часто пользуются восьмеричной записью кодов чисел, при этом старший разряд рассматривается как двоичная цифра.
Пример: Определить обратный код числа А[10] = -21 при n=16.
Получим обратный код во всех трех указанных формах. Так как кодируется отрицатель- ное число, необходимо вычислить дополнение и использовать его в качестве обратного кода.
v Двоичное кодирование. 1. |А[10]| = 21
2. |А[2]| = 10101
3. |А[2]| = 0000 0000 0001 0101 (Это модуль кодируемого числа в разрядной сет- ке)
4.
(А[2])обр= 1111 1111 1110 1010
F F E A[16]
v Шестнадцатеричное кодирование
1. | А[10]| = 21
|А[16]| = 15
2. (А[16])обр = F F F F (Это максимальное число без знака)
- 0 0 1 5 (Это модуль кодируемого числа в разрядной сетке) F F E A
v Восьмеричное кодирование
1. | А[10]| = 21
|А[8]| = 25
2. (А[8])обр = 1 7 7 7 7 7 (Это максимальное число без знака)
- 0 0 0 0 2 5 (Это модуль кодируемого числа в разрядной сетке)
1 7 7 7 5 2
Диапазон чисел в обратном коде составляет: A+max = 2n-1 – 1; A-min
= -(2n-1-1)
Достоинства:
1 Сложение и вычитание можно выполнять на одном устройстве: сумма- торе, поскольку вычитание может быть заменено сложением с допол- нением вычитаемого:
(С)обр = (А)обр + (В)обр
(С)обр = (А)обр - (В)обр = (А)обр + ((В)обр)обр
2 Знаковый разряд обрабатывается по общим правилам. Его значение при выполнении операции устанавливается автоматически.
Недостатки:
Неоднозначность кодировки нуля:
+0 при n=5
-0 при n=5
Чаще всего в ЭВМ используется модификация обратного кода – дополни- тельный код.
© ООО «Знанио»
С вами с 2009 года.