IV.3.6 Умножение на два разряда едновременно
Умножението
с два и
повече
разряда
едновременно
се
отнася към
групата
алгоритми за
апаратно ускоряване
на
операцията.
Съществуват
алгоритми за
изпълнението
й и по двата
метода, както
за числа без
знак, така и
за числа със
знак,
представени
в допълнителен
код.
А) УМНОЖЕНИЕ ПО МОДУЛ С МЛАДШИТЕ РАЗРЯДИ НАПРЕД, ПО СХЕМАТА С НЕПОДВИЖНО МНОЖИМО
Микрооперациите,
необходими
за изпълнение
на всеки такт
в този алгоритъм,
се определят
според
цифрите на текущата
вдойка
разряди на
множителя ( yi+1,
yi) и
функцията за
корекция Kj-1 на
междинната
сума. С буква i е означен
номерът на
текущия
разряд на множителя,
а с буква j –
номерът на
текущата
двойка
разряди. Възможните
ситуации са
определени в
таблица IV.1. Вижда се назначената
за текущия
такт
операция и новата
стойност на
функцията за
корекция Kj, която
ще се отчита
след
изместването,
заедно със
следващата
двойка
разряди на
множителя.
Таблица IV.1
|
|
|
Операция |
|
0 |
0 |
0 |
+ 0 |
0 |
0 |
0 |
1 |
+ Мн |
0 |
0 |
1 |
0 |
+ 2.Мн |
0 |
0 |
1 |
1 |
- Мн |
1 |
1 |
0 |
0 |
+ Мн |
0 |
1 |
0 |
1 |
+ 2.Мн |
0 |
1 |
1 |
0 |
- Мн |
1 |
1 |
1 |
1 |
+ 0 |
1 |
Наличието
на операция (+2.Мн)
налага междинните
суми да се
формират с
един допълнителен
разряд
отляво.
ПРИМЕР
68. Да се
изпълни
операция
умножение Z=X.Y на
числата X=21 и Y=28, които са
представени
в разрядна
мрежа с дължина n=8[b], по
метода с два
разряда
едновременно.
Мн = |X| = 0 0010101 ; Мт = |Y| = 0 0011100 .
ПРИМЕР
69. Да се
изпълни
операция
умножение Z=X.Y на числата X=118 и Y=118, които са
представени
в разрядна
мрежа с дължина
n=8[b],
по метода с
два разряда
едновременно.
Мн = |X| = 0 1110110 ; Мт = |Y| = 0 1110110 .
Б) УМНОЖЕНИЕ ПО МОДУЛ С СТАРШИТЕ РАЗРЯДИ НАПРЕД, ПО СХЕМАТА С НЕПОДВИЖНО МНОЖИМО
В този
алгоритъм
микрооперациите,
необходими
за
изпълнение
на всеки
такт, се
определят
според
цифрите на
текущата
двойка
разряди на множителя
( yi, yi-1) и
функцията за
корекция на
междинната
сума.
В
случая
ролята на
тази функция
се изпълнява
от младшата
цифра на
преидущата
двойка разряди
на
множителя ( yi+1).
Възможните
ситуации са
определени
чрез таблица IV.2.
Таблица IV.2
|
|
|
Операция |
|
0 |
0 |
0 |
+ 0 |
0 |
0 |
0 |
1 |
+ 2.Мн |
1 |
0 |
1 |
0 |
+ 2.Мн |
0 |
0 |
1 |
1 |
+ 4.Мн |
1 |
1 |
0 |
0 |
- 4.Мн |
0 |
1 |
0 |
1 |
- 2.Мн |
1 |
1 |
1 |
0 |
- 2.Мн |
0 |
1 |
1 |
1 |
+ 0 |
1 |
Така
както и при
умножение с
една цифра на
множителя, в
последния
такт не се
извършва изместване
на
междинната
сума, а само
на последните
цифри на
множителя,
останали в
неговия
регистър. При
този
алгоритъм
обаче, след
умножение с
последната
двойка
разряди на
множителя, е
възможно
междинната
сума да е
формирана с
излишък.
Така че, ако
младшата
цифра на
множителя в тази
последна
двойка се
окаже
единица, то е необходимо
да се извърши
последна
коригираща
операция - изваждане
на множимото
от текущата
сума.
ПРИМЕР
70. Да се
изпълни
операция
умножение Z=X.Y на числата X=118 и Y=118, които са
представени
в разрядна
мрежа с дължина
n=8[b],
по метода
със старшите
разряди
напред, на два
разряда
едновременно.
Мн = |X| = 0 1110110 ; Мт = |Y| = 0 1110110.
ПРИМЕР
71. Да се
изпълни
операция
умножение Z=X.Y на
числата X=117 и Y=113, които
са
представени
в разрядна
мрежа с дължина n=8[b], по
метода със
старшите
разряди
напред, на два
разряда
едновременно.
Мн = |X| = 0 1110101 ; Мт = |Y| = 0 1110001.
В) УМНОЖЕНИЕ ПО МОДУЛ С МЛАДШИТЕ РАЗРЯДИ НАПРЕД, ПО СХЕМАТА С НЕПОДВИЖНО МНОЖИМО В ДОПЪЛНИТЕЛЕН КОД
Умножението
на числа,
представени
в допълнителен
код, на два
разряда
едновременно
се извършва
по алгоритъм,
който в
последния
такт следва
да отчете знака
на множителя.
Известно е,
че при отрицателен
множител
полученото
произведение
трябва да се
коригира.
Необходимите
за целта
операции в
последния
такт са
представени
в таблица IV.3.
Таблица IV.3
|
Знак на Мт |
|
Операция |
0 |
1 |
0 |
- 2.Мн |
0 |
1 |
1 |
- Мн |
1 |
1 |
0 |
- Мн |
1 |
1 |
1 |
+ 0 |
Както
се вижда от
таблицата,
последната
(най-старшата)
двойка
разряди се
формира от знака
на множителя
и неговата
цифра в
разряд № (n-2).
Назначената
операция е
резултат от
операциите,
определени
от цифрата (yn-2), от
стойността
на функцията
на
корекцията и
от знака на
множителя.
ПРИМЕР
72. Да се
изпълни
операция
умножение Z=X.Y на числата X=118 и Y=-98, които
са
представени
в разрядна
мрежа с дължина
n=8[b],
по метода с
два разряда
едновременно.
ПРИМЕР
73. Да се
изпълни
операция
умножение Z=X.Y на
числата X=-98 и Y=-97, които
са представени
в разрядна
мрежа с
дължина n=8[b].
Представените
два примера
илюстрират
само първата
комбинация
от таблица IV.3, според
която в
последния
такт се
назначава
операция +2Мн.
В следващите
примери
илюстрираме
останалите
случаи.
ПРИМЕР
74. Да се
изпълни
операция
умножение Z=X.Y на
числата X=-26 и Y=-3.
Според
получената
комбинация (0 11)
този пример
илюстрира
втората
комбинация
от таблица IV.3, т.е.
последната
операция е
(-Мн).
ПРИМЕР
75. Да се
изпълни
операция
умножение Z=X.Y на числата X=-26 и Y=-5.
Според
получената
комбинация (1 10)
този пример
илюстрира
третата
комбинация
от таблица IV.3, т.е.
последната
операция е
(-Мн).
ПРИМЕР
76. Да се
изпълни
операция
умножение Z=X.Y на
числата X=-26 и Y=-1.
Според
получената
комбинация (1 11)
този пример
илюстрира четвъртата
комбинация
от таблица IV.3, т.е.
последната
операция е (+0).
Следващият
раздел е:
4.3.7
Умножение
на числа с
ляво
фиксирана
запетая