Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦУМП лекция рус.doc
Скачиваний:
296
Добавлен:
09.02.2016
Размер:
4.68 Mб
Скачать

Умножение чисел в прямом коде.

При умножении двоичных чисел X и У (по методу 1), представленных в прямом коде, перемножаются их модули. При этом, если очередной разряд множителя равен 1, то множимое прибавляется к накопленной промежуточной сумме частичных произведений. Полученная очередная сумма сдвигается на разряд вправо и осуществляется переход к анализу следующего разряда множителя. Если следующий анализируемый разряд множителя равен О, то суммирование множимого к промежуточной сумме частичных произведений пропускается, и осуществляется только сдвиг на разряд вправо суммы частичных произведений. Знак произведения определяется как сумма по модулю два знаков сомножитей.

Умножение чисел в дополнительном коде.

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

При этом необходимо учесть ряд особенностей, которые зависят от знаков множимого X и множителя У.

1. Х>0 иУ>0. Операнды (включая знаки) вступают в операцию в прямом коде и правило умножения чисел ничем не отличаются от рассмотренного выше. Знак произведения формируется автоматически.

2. Х>0 иУ<0. При этом для получения правильного результата в дополнительном коде необходимо результат умножения скорректировать на величину[Х]доп. Это следует из того, что при умножении[Х]пр·[У]доп=[Х]пр·(-У)=[Х]пр-X·У, в то время как необходимый результат[ХУ]доп=-X·У

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

-X=(-X)=[Х]доп

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

[ХУ]доп=[Х]пр[У]доп-[Х]доп

,где(-[Х]доп) является коррекцией.

Пример 2.1. Множимое Х=+7 и множитель У=-3 заданы 4-х разрядными двоичными кодами:

[х]пр=0.111 и [У]доп=1.101

Требуется найти их произведение.

Решение: [-Х]доп24=(24-Х)-24=1.00100002/коррекция/

Множимое 0,111 Множитель 1,101

Исходная СЧП 0,0000000

+

0,111 [Х]пр 1

1-я СЧП 0,1110000

Сдвинутая 1-я СЧП 0,0111000 0

Сдвинутая 2-я СЧП 0,0011100

+

0,111 [Х]пр 1

3-я СЧП 1,0001100

Сдвинутая 3-я СЧП 0,1000110

+

0,111 [Х]пр 1

4-я СЧП 1,0110110

Сдвинутая 4-я СЧП 0,1011011

+

1,0010000 [-Х]доп24

1,1101011

Ответ: [ХУ]доп=1,1101011

[ХУ]пр=1.00101012=-2110

3. Х<0 иУ>0. Для получения правильного результата в дополнительном коде необходимо ввестикоррекцию (-[У]доп). Это следует из того, что

[Х]доп·[У]пр=(-Х)=У-Х·У,

в то время как требуемый результат

[Х·У]доп=Х·У.

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

-У=[У]доп

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

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

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

Использование модифицированного сдвига в процессе формирования произведения позволяет автоматически осуществить коррекцию произведения (приХ<0) на-[У]доп. В самом деле, если

,

и в тех случаях, когда Уi=1 при модифицированном сдвиге частичного произведения(Х<0,Хn=1) мы по существу к частичному произведению добавляем -Уi.

4. Х<0 иУ<0. Для получения правильного результата к произведению дополнительных кодов сомножителей необходимо прибавить коррекцию [Х]·+[У]·. По аналогии с рассмотренным выше корректирующий член [Х]· может быть учтен на заключительном этапе, а второй корректирующий член - в процессе умножения.