Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы схемотехники и вычислительных систем.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
3.08 Mб
Скачать

1.4.3. Обратный код

Использование обратного кода дает еще одну возможность замены арифметического действия вычитания сложением с инверсией вычитаемого.

Кодирование чисел в обратном коде можно также получить естественным путем при помощи операции вычитания (при моделировании работы вычитающего счетчика).

Для примера рассмотрим работу двоичного счетчика при вычитании, начиная со значения 2(10):

0.010 + 2(10)

0.001 + 1(10)

0.000 + 0(10) ноль

1.111 это значение в обратном коде рассматривается как минус ноль (–0(10))

1.110 –1(10)

1.101 –2(10) и т.д.

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

Ниже представлены числа со знаком в обратном коде, которые можно поместить в трехразрядный регистр:

Положительные

Отрицательные

0.00(2)

+ 0(10)

1.00(2)

– 3

0.01(2)

+ 1(10)

1.01(2)

– 2

0.10(2)

+ 2(10)

1.10(2)

– 1

0.11(2)

+ 3(10)

1.11(2)

– 0

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

Примеры выполнения операции вычитания в обратном коде над числами

А=2(10)=0.10(2) и В=1(10)=0.01(2)

1. С=А–В=А+(–В)

0.10 +2(10)

+1.10 –1(10)

10.00 сложение

+ 1 коррекция, сложение с единицей переноса

0.01 результат 2(10)–1(10)=1(10).

2. С=В–А=В+(–А)

0.01 +1(10)

+1.01 –2(10)

1.10 результат 1(10)–2(10)=–1(10)

В примере (из меньшего вычитается большее) нет коррекции, но результат верен.

3. С=В–1–1=В+(–1)+(–1). Пример эквивалентен примеру 2, но вычитание двух единиц производится в два этапа.

0.01 +1(10)

+1.10 –1(10)

1.11 –0(10) результат первого вычитания

+1.10 –1(10)

11.01 результат второго вычитания без коррекции

+ 1 коррекция, сложение с единицей переноса

1.10 результат 1(10)–2(10)=–1(10).

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

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

Для выявления переполнения разрядной сетки применяется модифицированный обратный код.

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

Дополнительный и обратный коды считаются равноценными, но в реальных ЭВМ применяется преимущественно дополнительный код. В ЭВМ числа со знаком могут храниться в памяти в прямом, обратном или в дополнительном кодах, но выполнение арифметических операций, связанных с вычитанием, производится с использованием дополнительного или обратного кодов.