Главная > Прикладная теория цифровых автоматов
НАПИШУ ВСЁ ЧТО ЗАДАЛИ
СЕКРЕТНЫЙ БОТ В ТЕЛЕГЕ
<< Предыдущий параграф Следующий параграф >>
Пред.
След.
Макеты страниц

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

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

ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO

3.3. ОПЕРАЦИЯ СДВИГА

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

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

Пример. Заданы

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

Сдвиг положительного числа влево или вправо в дополнительном или обратном коде ничем не отличается от сдвига положительного числа в прямом коде.

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

Это означает, что сдвиг вправо на разрядов отрицательного числа, записанного дополнительным кодом, должен преобразовать код

Если выполнять механическую операцию сдвига кода числа на разрядов вправо, то получим

т. е. результат будет отличаться от требуемого на величину

Коррекция производится путем заполнения старших освободившихся разрядов знаковыми единицами, так как

Пример. Сдвинуть число на 3 разряда вправо При последующих сдвигах вправо возникает ошибка, уменьшение которой потребует округление результата.

При сдвиге вправо отрицательных дробей, представленных обратным кодом, необходимо получить

При механическом сдвиге получим код

т. е. необходима поправка на величину

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

Пример. Заданы .

Сдвиг вправо кода двоичного числа с заполнением освободившихся старших разрядов символами, совпадающими с символами знака, носит название модифицированного сдвига.

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

Непосредственное умножение на 2 даст

Для получения истинного кода необходима поправка на величину

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

Пример. Заданы когда

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

Умножение на 2 обратного кода числа даст

отличающийся от истинного величину

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

Пример. Задано тогда

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

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

1
Оглавление
email@scask.ru