Сложение в обратном коде
В обратном коде, как и в дополнительном, операция вычитания заменяется операцией сложения. При этом знаковый разряд и цифровая часть числа рассматриваются как единое целое. Правильный знак суммы получается в результате суммирования цифр знаковых разрядов операндов и единицы переноса из цифровой части, если она есть. Характерной особенность сложения в обратном коде является наличие циклического переноса (если он возникает) из знакового разряда в младший разряд цифровой части, благодаря которому осуществляется коррекция суммы на 2-n. Рассмотрим все возможные варианты сложения чисел в обратном коде:
1) А›0, В›0, С›0. А=+0,101101 В=+0,000111 Апр=0,101101 Впр=0,000111 Аок=0,101101 Вок=0,000111 Сок=Аок+Вок +0,101101 0,000111 0,110100 2) А›0, В‹0, С›0. А=+0,101101 В=-0,000111 Апр=0,101101 Впр=1,000111 Аок=0,101101 Вок=1,111000 Сок=Аок+Вок + 0,101101 1,111000 1ß0,100101 (1 переноса из знакового разряда суммы прибавляется в à 1 младший значащий разряд результата) 0,100110 3) А‹0, В›0, С‹0. А=-0,101101 В=+0,000111 Апр=1,101101 Впр=0,000111 Аок=1,010010 Вок=0,000111 Сок=Аок+Вок + 1,010010 0,000111 1,011001 (Спр= 1,100110) 4) А‹0, В‹0, С‹0. А=-0,101101 В=-0,000111 Апр=1,101101 Впр=1,000111 Аок=1,010010 Вок=1,111000 Сок=Аок+Вок + 1,010010 1,111000 1ß1,001010 (1 переноса из знакового разряда суммы прибавляется в à 1 младший значащий разряд результата) 1,001011 (Спр= 1,110100)
При сложении в обратном коде, как и в дополнительном, в 1-м и 4-м случаях возможно переполнение. Для упрощения обнаружения переполнения разрядной сетки ЭВМ используются модифицированный обратный и модифицированный дополнительный коды.
При представления положительных чисел в модифицированном коде в знаковых разрядах используется 00, а отрицательных - 11. Признаком переполнения разрядной сетки являются разные значения в знаковых разрядах. Пример 1.
[А]мок=00,101101 [В]мок=00,011100 00,101101 00,011100 01,001001 - положительное переполнение Пример 2. [А]мок=11,010010 [В]мок=11,100011 11,010010 11,100011 1←10,110101 à + 1 10,110110 - отрицательное переполнение.
Операция сдвига в ЭВМ
К операции сдвига приходиться обращаться при выполнении сложения в машине с плавающей запятой, а также при выполнении операций умножения и деления в ЭВМ обоих типов. Во всех этих операциях производится сдвиг мантисс, поэтому будут рассматриваться только числа с фиксированной запятой. Сдвиг прямого кода числа на k разрядов вправо эквивалентен умножению этого числа на 2-k. Ввиду того, что при сдвиге вправо младшие разряды сдвигаемого числа выходят за пределы разрядной сетки машины и теряются, погрешность представления сдвинутого кода числа имеет отрицательный знак для кодов положительных чисел и положительный знак для кодов отрицательных чисел. Для ее уменьшения необходимо предпринимать округление чисел. При сдвиге прямого кода отрицательной дроби сдвигается только ее мантисса, а знак остается без изменения. Пример 1.
А= 1,011010, k=1 (левый сдвиг) k=-1 (правый сдвиг) 21хА=1,110100 2-1хА=1,001101
Сдвиг прямого кода числа влево на k разрядов эквивалентен умножению числа на 2k. Эта операция корректна до тех пор, пока старшие значащие цифры не начнут выходить за пределы разрядной сетки, т.е. пока число по абсолютной величине не станет больше 1. При сдвиге влево освобождающиеся справа разряды заполняются 0. Сдвиг положительного числа влево или вправо в дополнительном или обратном кодах ничем не отличаются от сдвига положительного числа в прямом коде. Под сдвигом отрицательного числа А, записанного инверсным (дополнительным или обратным) кодом, понимается преобразование инверсного кода отрицательного числа А в инверсный код отрицательного числа Ах2-k в случае сдвига вправо и Ах2k в случае сдвига влево. Общим правилом сдвига дробей вправо в инверсном коде является наличие передачи из знакового разряда в старший цифровой разряд и восстановление знака, т.е. освобождающиеся справа разряды заполняются 1. При сдвиге влево освобождающиеся справа разряды в обратном коде заполняются 1, а в дополнительном - 0. Количество сдвигов правильной дроби влево ограничено условием | Ах2k |<1, т.е. сдвиг допустим лишь до тех пор, пока в разряде справа от запятой не появится 0 (пока сохраняется знак результата). Перемена знака результата при сдвиге влево является признаком переполнения, который для отрицательных и положительных чисел совпадает с признаком переполнения, возникающим при сложении кодов двух чисел. Пример 2. Сдвиг в обратном коде:
[А]о= 1,011010, k=1 (левый сдвиг) k=-1 (правый сдвиг) 21хА=1,110101 2-1хА=1,101101
Сдвиг в дополнительном коде:
[А]д= 1,011010, k=1 (левый сдвиг) k=-1 (правый сдвиг) 21хА=1,110100 2-1хА=1,101101
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Почему стероиды повышают давление?: Основных причин три... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (932)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |