- •Алгоритм множення починаючи з молодших розрядів множника і зсувом розрядів суматора вправо
- •2. Алгоритм множення починаючи з молодших розрядів множника і зсувом розрядів множеного вліво
- •Алгоритм множення починаючи з старших розрядів множника і зсувом розрядів суматора вліво
- •Алгоритм множення починаючи з старших розрядів множника і зсувом розрядів множеного вправо
ОСНОВНІ АЛГОРИТМИ КОМП'ЮТЕРНОГО МНОЖЕННЯ
В ПРЯМОМУ КОДІ
Операція множення на сучасних ЕОМ у більшості випадків виконується сумуванням зсунутих на один або декілька розрядів часткових добутків, кожний з яких є результатом множення множеного на відповідний розряд множника.
Найбільш просто множення виконується у прямому коді. При цьому на першому кроці визначається знак добутку. Це легко робиться за допомогою логічної операції додавання за модулем 2, таблиця якого має вигляд
-
0
0
0
0
1
1
1
0
1
1
1
0
Після визначення знаку виконується перемноження модулів співмножників за правилами двійкової арифметики. Результату присвоюється одержаний знак.
Оскільки множення виконується в двійковій системі числення, то часткові добутки або дорівнюють 0 (при множені на 0), або дорівнюють самому співмножнику (при множені на 1), зсунутому на відповідну кількість розрядів.
Приклад. Задані числа: Х=1101, Y=1011. Знайти добуток .
Можливі два варіанти множення: а) із зсувом розрядів множеного вліво; б) із зсувом розрядів множеного вправо.
а)
б)
– множене
– множене
– множник
– множник
– множення
починається з молодших розрядів;
зсув вліво (←)
– множення
починається з старших розрядів; зсув
вправо (→)
Далі будемо вважати, що множене Х і множник – правильні двійкові дроби вигляду
і ,
де . Тоді добуток абсолютних величин операндів і можна представити як
. (1)
Вирази вигляду , називають частковими добутками.
З наведеного вище прикладу випливає, що керування процесом множення може початися як з молодших розрядів множника, так і з старших.
Оскільки множення на еквівалентно зсуву вправо, то обчислення добутку Z зводиться до формування часткових добутків , їх зсуву і підсумовуванню з урахуванням ваг, які визначаються величинами .
При цьому повну суму (добуток) можна одержати двома способами:
зсувом множеного на потрібну кількість розрядів і додаванням одержаного чергового часткового добутку до раніше накопиченої суми;
зсувом суми раніше накопичених часткових добутків на один розряд з наступним додаванням до зсунутої суми не зрушуваного множеного або нуля.
Базуючись на вищесказаному можна створити чотири основних алгоритми комп’ютерного множення.
Алгоритм множення починаючи з молодших розрядів множника і зсувом розрядів суматора вправо
Даний алгоритм множення використовує представлення добутку у вигляді схеми Горнера для множення многочленів
(2)
Рис. 1
Звідси випливає, що добуток Z може бути отриманий за рекурентною формулою
(3)
де – сума i часткових добутків.
Таким чином, у даному випадку множення починається з молодших розрядів множника, а сума часткових добутків на кожному кроці зсувається вправо рис. 1 б). Число кроків множення дорівнює п, останній крок закінчується зсувом. ГСА такого множення представлена на рис. 1 б), де – цифра в молодшому розряді регістра множника РY на даному кроці множення ("поточна" цифра множника), ЛЧК – лічильник числа кроків множення. Довжина регістрів операндів складає п розрядів, регістра результату – 2п розрядів, лічильника кроків – розрядів.
Приклад 1. Складемо цифрову діаграму множення чисел і , (табл. 1).
Таблиця 1
-
→
→
ЛЧК
Пояснення
1011
110 1
00000000
000
Вихідний стан
1011
10110000
Результат підсумовування
011 0
01011000
001
Зсув
001 1
00101100
010
Зсув
1011
11011100
Результат підсумовування
000 1
01101110
011
Зсув
1011
1 00011110
100
Результат підсумовування
10001111
Зсув
END
Результат:
2. Алгоритм множення починаючи з молодших розрядів множника і зсувом розрядів множеного вліво
Другий основний алгоритм множення заснований на представленні добутку у вигляді
(4)
,
де . Множення, таким чином, зводиться до обчислень за рекурентною формулою
, (5)
де .
Рис. 2
У данному випадку множення починається з молодших розрядів множника, сума частинних добутків нерухома, а множене в процесі множення зсувається вліво (рис. 2,а). Число кроків дорівнює п, а закінчується множення підсумовуванням. Регістр множника повинний мати довжину в п розрядів, регістри множеного і суми часткових добутків – по 2п розрядів. Перед початком множення множене повинно бути записане у відповідний регістр зі зсувом вправо на п розрядів для того, щоб було сформоване значення . ГСА такого множення показана на рис. 2, б.
Приклад 2. Складемо цифрову діаграму множення чисел і , за другим основним алгоритмом (табл. 2).
Таблиця 2
-
←
→
ЛЧК
Пояснення
0000 1011
110 1
0000 0000
001
Вихідний стан
0000 1011
0000 1011
Результат підсумовування
0001 0110
011 0
0000 1011
010
Зсув
0010 1100
001 1
0000 1011
011
Зсув
0010 1100
0011 0111
Результат підсумовування
0101 1000
000 1
0011 0111
100
Зсув
0101 1000
10001111
Результат підсумовування
END
Результат: