Схема умножение чисел в дополнительном коде отличается от умножения в прямом коде тем, что:
· при умножении используются знаковые разряды сомножителей, причем как имеющие отрицательный вес,
· в схемах, использующих сдвиг вправо множимого (схема d) или суммы частичных произведений (схема а), знак должен сдвигаться и дублироваться в знаковом разряде,
· в схеме с знаковый разряд должен распространяться на все старшие разряды сумматора,
· при умножении на знаковый разряд, если он равен единице (имеет отрицательный вес), множимое не прибавляется к сумме частичных произведений, а вычитается (прибавляется с изменением знака). Для этого все разряды множимого, включая знаковый, инвертируются и к младшему разряду прибавляется единица.
Примеры умножения целых чисел в дополнительном коде по схеме а
Для сохранения результата при возможном переполнении разрядной сетки при задании множимого и формировании суммы частичных произведений в примерах используется модифицированный дополнительный код. Для задания знака множителя, как значения, непосредственно не используемого в операциях сложения/вычитания, используется обычный дополнительный код.
В примерах разряды суммы частичных произведений отделены от разрядов знака пробелом, а от разрядов множителя – вертикальной чертой.
Пример 1. Умножение целых чисел в модифицированном дополнительном коде по схеме а (умножение с младших разрядов множителя со сдвигом частичных произведений вправо).
А =–7(10) = 11,001(2) – множимое.
В = +5(10) = 0,101(2) – множитель
С – произведение.
Множимое А
(3 бита)
Произведение С
(4 бита)
Множитель В
(3 бита)
Комментарии
11,001
00,000
½0,101
Исходное состояние.
00,000
11,001
11,001
½0,10 1
Анализ младшего бита множителя (1) и прибавление множимого к сумме частичных произведений
11,100
1½0,1 0
Сквозной сдвиг суммы частичных произведений (с распространением знака) и множителя вправо на один разряд
11,100
00,000
11,100
1½0,1 0
Анализ младшего бита множителя (0) и блокировка прибавления множимого к сумме частичных произведений.
11,110
01½0, 1
Сквозной сдвиг суммы частичных произведений и множителя вправо на один разряд.
11,110
11,001
10,111
01½0, 1
Анализ младшего бита множителя (1) и прибавление множимого к сумме частичных произведений
11,011
101½0,
Сквозной сдвиг суммы частичных произведений и множителя вправо на один разряд.
11,011
101½0,
Анализ младшего бита (знака) множителя (0) и блокировка прибавления множимого к сумме частичных произведений.
Результат С = 11,011101(2) = – 35(10).
Пример 2. Умножение целых чисел в модифицированном дополнительном коде по схеме а (умножение с младших разрядов множителя со сдвигом частичных произведений вправо).
А =–7(10) = 00,111 – множимое.
В = –5(10) = 1,011 – множитель
С – произведение.
Множимое А
(3 бита)
Произведение С
(4 бита)
Множитель В
(3 бита)
Комментарии
11,001
00,000
½1,011
Исходное состояние.
00,000
11,001
11,001
½1,011
Анализ младшего бита множителя (1) и прибавление множимого к сумме частичных произведений
11,100
1½1,01
Сквозной сдвиг суммы частичных произведений (с распространением знака) и множителя вправо на один разряд
11,100
11,001
10,101
1½1,01
Анализ младшего бита множителя (1) и прибавление множимого к сумме частичных произведений.
11,010
11½1,0
Сквозной сдвиг суммы частичных произведений и множителя вправо на один разряд.
11,010
00,000
11,010
11½1,0
Анализ младшего бита множителя (0) и блокировка прибавления множимого к сумме частичных произведений
11,101
011½1
Сквозной сдвиг суммы частичных произведений и множителя вправо на один разряд.
11,101
00,111
00,100
011½1
Умножение на разряд знака: анализ знака множителя (1) и вычитание множимого (прибавление в дополнительном коде) из суммы частичных произведений.
Результат С = 00,100011(2) = + 35(10).
Блок схема алгоритма выполнения умножения целых чисел в модифицированном дополнительном коде по схеме а (умножение с младших разрядов множителя со сдвигом частных произведений вправо) представлена на рис. 5.5.