
- •1. Системы счисления
- •1.2. Двоичная система счисления
- •1.7. Перевод из одной системы счисления в другую
- •1.8. Двоично-десятичный код
- •9 8 3 6 5
- •2. Двоичная арифметика
- •3. Способы представления чисел (прямой, обратный и дополнительный коды)
- •3.1. Положительные целые числа
- •3.2. Отрицательные целые числа
- •3.3. Преобразование кодов
- •3.4. Преобразование положительных чисел из одного кода в другой
- •3.5. Преобразование прямого кода отрицательного числа в обратный код и обратного кода отрицательного числа в прямой код
- •3.6. Преобразование обратного кода отрицательного числа в дополнительный код
- •3.7. Преобразование дополнительного кода отрицательного числа в обратный и прямой коды
- •3.8. Некоторые возможности упрощения преобразований двоичного прямого или обратного кода в дополнительный и наоборот
3.3. Преобразование кодов
При преобразовании кодов необходимо учитывать следующие особенности, вытекающие из свойств кодов.
1. При преобразовании дополнительного кода в прямой или обратный коды необходимо увеличить формат числа на один старший значащий разряд. При всех других преобразованиях формат числа сохраняется.
Необходимость увеличения формата при преобразовании дополнительного кода вызвана тем, что минимальное число представимое в дополнительном коде (–qn) нельзя записать в прямом или в обратном коде, сохранив разрядность кодов.
Например, при q = 10 код 1|000доп имеет количественный эквивалент –103. Это значение в прямом и в обратном кодах 1|1000пр и 1|8999обр содержит дополнительный старший значащий разряд. Аналогично, при q = 2 код 1|000доп имеет количественный эквивалент –23, что соответствует кодам 1|1000пр (–8) и 1|0111обр.
2. При преобразовании прямого или обратного кода в дополнительный код знак числа может измениться. Изменение знака может произойти в единственном случае, когда в прямом или обратном коде записано число (–0), которое в дополнительном коде придется записать как (+0). При всех других преобразованиях знак числа сохраняется.
Например, при q = 10 коды 1|000пр (–0) и 1|999обр (–0) соответствуют коду 0|000доп (+0).
Аналогично, при q = 2 коды 1|000пр (–0) и 1|111обр (–0) соответствуют коду 0|000доп (+0).
3.4. Преобразование положительных чисел из одного кода в другой
При преобразовании положительных чисел из одного кода в другой код числа не изменяются за исключением случаев преобразования дополнительного кода в прямой или в обратный код.
Пример. В примерах A,C и E показаны преобразования из прямого кода в обратный и дополнительный код и из обратного кода в прямой и в дополнительный код. В примерах B,D и F показаны преобразования из дополнительного кода в прямой и обратный код.
3.5. Преобразование прямого кода отрицательного числа в обратный код и обратного кода отрицательного числа в прямой код
Для преобразования прямого кода отрицательного числа в обратный код или обратного кода в прямой достаточно заменить цифры значащих разрядов обратными им.
Содержимое знакового разряда остается без изменения.
3.6. Преобразование обратного кода отрицательного числа в дополнительный код
Для преобразования обратного кода отрицательного числа в дополнительный код достаточно прибавить 1 к младшему разряду обратного кода. Знаковый разряд должен участвовать в операции сложения наравне со значащими. Сложение в знаковом разряде должно выполняться в двоичном коде, и перенос из знакового разряда в следующий должен быть отброшен.
Преобразование прямого кода отрицательного числа в дополнительный код можно выполнить разными способами:
• преобразовать прямой код в обратный, и затем обратный код в дополнительный по изложенным выше правилам;
• вычесть из прямого кода, включая его знаковый разряд, константу qm, и затем заменить цифры в значащих разрядах полученного кода на обратные им;
• вычесть прямой код числа, включая его знаковый разряд, из константы qn.
Рассмотрим первый способ преобразования на примере:
В следующем примере выполняется вычитание 1 из прямого кода числа, и затем значащие цифры полученного кода заменяются на обратные.
В следующем примере выполняется вычитание прямого кода числа из константы qn. Заем из знакового разряда отбрасывается.
Сопоставляя примеры, можно убедиться в том, что при одинаковом значении исходного данного и разных способах вычисления, результаты совпадают.