Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОДЕРЖАНИЕ 3 (2).doc
Скачиваний:
28
Добавлен:
31.08.2019
Размер:
5.65 Mб
Скачать
        1. Взаимное преобразование прямого, обратного и дополнительного кодов

По определению в разделе 3.2 запись положительного числа во всех кодах совпадает. Поэтому преобразование кода положительного числа в любой другой код выполняется копированием исходного кода в формат результата.

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

        1. Взаимное преобразование прямого и обратного кодов отрицательных чисел

При преобразовании знак числа сохраняется. Поэтому при любом способе преобразования содержимое поля знака исходного кода можно копировать в поле знака результата.

Количественный эквивалент значащих разрядов обратного кода отрицательного числа является дополнением количественного эквивалента значащих разрядов прямого кода до величины . Следовательно, количественные эквиваленты значащих разрядов обратного и прямого кодов связаны отношениями

(3-12)

. (3-13)

Поэтому правила преобразования прямого в обратный код и обратного в прямой код совпадают.

Так как и то формат числа при преобразованиях сохраняется.

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

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

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

Константа в любой системе счисления является цепочкой цифр с максимальным количественным эквивалентом. Например, в десятичной: 999…9; в шестнадцатеричной: FFF…F; в двоичной: 111…1. Вычитание из такой константы числа не приводит к образованию займов и сводится к выполнению операции поразрядного вычитания, т.е. к выполнению вычитания цифр в каждом разряде независимо от результата вычитания в других разрядах.

Пример 3-4. Выполнено преобразование значащих разрядов прямого кода чисел: –129,7910; –12,EF16; –10,102 в обратный код способом 1.

В

A B C

P=10 P=16 P=2

999|99 FFF |FF 111|11

- 1|129|79 - 1| 012 |EF - 1|010|10

1|870|20 1|FED|10 1|101|01

вариантах A, B и C выполняется вычитание значащих разрядов прямого кода из константы , представленной в соответствующей системе счисления. Знак числа копируется в знаковый разряд результата. Результат – обратный код того же числа.

Преобразование способом 1 вычисленных обратных кодов в прямые коды выполните самостоятельно, и убедитесь в том, что результаты преобразования совпадают с исходными кодами.

В позиционных системах счисления цифры и удовлетворяющие отношению называют взаимно обратными, откуда происходит название обратного кода. Например, десятичные цифры 3 и 6; 8 и 1; 0 и 9 взаимно обратные, так как ; ; . Двоичные цифры 0 и 1 взаимно обратные, поскольку , а . Шестнадцатеричные цифры 7 и 8; E и 1; 2 и D взаимно обратные, так как ; ; ; ; ; .

Из примера 3-4 следует, что результат вычитания можно получить заменой цифр в исходном коде обратными. Это подтверждает правильность преобразований способом 2.

Пример 3-5. Ниже приведены результаты преобразования прямых кодов в обратные коды или наоборот выполненные способом 2.

В варианте A число положительное. Поэтому прямой и обратный код числа совпадают.

Убедитесь в том, что подсчет количественных эквивалентов пар кодов по формулам (3-09) и (3-11) дает одинаковые результаты как в случае положительных, так и в случае отрицательных чисел.

О

1|01|10 0|01|10

11 11 00 00

1|10|01 0|01|10

10110 00110

11 11 00 00

11001 00110

братите внимание на то, что взаимное преобразование обратного и прямого кодов отрицательных двоичных чисел сводится к инвертированию цифр в битах значащих полей, т.е. к замене 0 на 1 и 1 на 0. Поэтому в двоичной системе счисления значащие разряды результата можно вычислить, складывая по модулю 2 значащие разряды исходного кода с кодом его знака. Например: