Этот способ требует двух n–разрядных регистров множителя и множимого и одного 2n-разрядного регистра суммы частичных произведений. На схеме видно, что суммирование множимого следует выполнять в младшие n разрядов регистра суммы частичных произведений.
Особенность III способа - в последнем такте не следует выполнять сдвиг в регистре суммы частичных произведений.
IV способ – умножение со старших разрядов множителя со сдвигом множимого вправоЭтот способ требует одного n–разрядного регистра множителя и двух 2n-разрядных регистров множимого и суммы частичных произведений. Причем, первоначально множимое помещается в старшие разряды регистра, а затем в каждом такте сдвигается на один разряд вправо.
Особенность IV способа - перед началом цикла умножения следует множимое сдвинуть на один разряд вправо.
Все приведенные выше четыре способа используются как в алгоритмах умножения в прямом коде (ПК), так и в алгоритмах умножения в дополнительном коде (ДК), как при умножении чисел с фиксированной запятой (ФЗ), так и при умножении мантисс чисел с плавающей запятой (ПЗ).
Алгоритм умножения двоичных чисел с ФЗ в прямом коде:
1. Определить знак произведения путем сложения по модулю два знаковых разрядов сомножителей.
2. Перемножить модули сомножителей одним из четырех способов.
3. Присвоить полученному произведению знак из п.1 алгоритма.
Пример 4.Перемножить числа А=26(10)=11010(2); В=-19(10)=-10011(2), представив их в 2СС, ПК, с ФЗ.
4. Проверка результата. Масштаб произведения МА×МВ=210.
А×В=-111101110(2)=-494(10).
Алгоритм умножения двоичных чисел с ФЗ в ДК с простой коррекцией:
1. Определить знак произведения путем сложения по модулю два знаковых разрядов сомножителей.
2. Перемножить модули сомножителей, представленных в ДК, одним из четырех способов – получить псевдопроизведение.
3. Если хотя бы один из сомножителей отрицателен, выполнить коррекцию по следующим правилам:
-если один сомножитель отрицателен, к псевдопроизведению прибавляется дополнительный код от модуля положительного сомножителя;
-если оба сомножителя отрицательны, к псевдопроизаведению прибавляются дополнительные коды от модулей дополнительных кодов обоих сомножителей, т.е. их прямые коды.
4. Присвоить модулю произведения знак из п.1 данного алгоритма.
Пример 5. Перемножить числа А=-18(10)=-10010(2); В=27(10)=11011(2), представив их в ДК и применив алгоритм с простой коррекцией.
М=25
АПК =1,10010
АДК =1,01110
ВПК =0,11011
ВДК =0,11011
1. Знак произведения: 1Å0=1.
2. Перемножить модули сомножителей, используя II способ.
Таблица
Множитель
Множимое
Сумма ЧП
Пояснения
0,01110
0,0000011011
0,0000000000
Сдвиги
0,00111
0,0000110110
0,0000110110
0,00011
0,0001101100
0,0000110110
Сложение
0,0001101100
Сдвиги
0,00001
0,0011011000
0,0010100010
Сложение
0,0011011000
Сдвиги
0,00000
0,011011000
0,0101111010
Сложение
Сдвиги
0,00000
0,1101100000
Сдвиги
Получено псевдопроизведение: 0,0101111010
3. Так как один из сомножителей отрицателен, нужна коррекция дополнительным кодом от модуля положительного сомножителя:
ВДК=0,00101
0,0101111010
0,00101
Модуль произведения
0,1000011010
4. Полное произведение в дополнительном коде:
(А×В)ДК=1,1000011010.
5. Проверка результата. Масштаб произведения МА×МВ=210.