![](/user_photo/2706_HbeT2.jpg)
Рекомендується виконати домашнє завдання 25
Ще один варіант об’єднання корекції добутку з підсумовуванням часткових добутків заснований на перетворенні цифр множника. З попереднього відомо, що при Х>0 множення в доповняльному коді можна виконувати за алгоритмами множення в прямому коді, якщо тільки підсумовування часткових добутків і зсуву виконувати за правилами додавання і зсуву модифікованого додаткового коду. Тому далі будемо розглядати лише варіанти, що відповідають Х<0.
1. Нехай Х<0,
Y>0, тоді
абсолютна величина вмісту числових
розрядах операнда
дорівнює
.
Тому, якщо до числових розрядів операнда
додати знаковий розряд, вважаючи при
цьому, що він має штучну вагу -1, то
абсолютна величина вмісту числових
розрядів множника, перетвореного таким
чином, складе
Отже, множення на
можна виконувати так само, як і в прямому
коді, тобто
2. У випадку Х<0,
Y<0, досить
перетворити множник до вигляду
,
а підсумовування і зсуви виконувати за правилами підсумовування і зсув модифікованих доповняльних кодів.
Для перетворення
в
немає
необхідності виконувати окремі операції
відповідно до вищенаведених формул.
Покажемо, як таке перетворення можна
об’єднати зі зсувом множника і суми
часткових добутків. Позначимо числову
частину операнда
як
.
Нехай
Тоді можна записати, що
Представимо ваги
розрядів (крім знакового) у цьому виразі
як
0 1
0 1 0 1
0 1
0 1
Рис.29
Тоді одержимо
Таким чином, для
додання знаковому розряду ваги –1
необхідно цифри множника піддати
перетворенню
Таблиця 30
-
0
0
1
1
0
1
0
1
0
1
-1
0
Однак оскільки
то
.
Очевидно, що для одержання
,
досить порівнювати цифри в сусідніх
розрядах множника (табл. 30). При
=0
підсумовування не виконується, при
=1
роблять додавання множеного до суми
часткових добутків, при
виконують віднімання множеного із суми
часткових добутків. Тому що множення
виконується і на знаковий розряд, то
число кроків множення дорівнює
.
Для того, щоб окремі розряди добутку
займали наприкінці операції правильні
вагові позиції, зсув на останньому кроці
не виконується. У перетворенні
-й
цифри множника беруть участь i-ва
і i+1–я
його цифри. Тому при множенні з молодших
розрядів регістр множника повинний
мати додатковий молодший розряд, де
зберігається i+1-а
цифра. ГСА множення в доповняльному
коді з перетворенням цифр множника
наведено на рис.29, де
- вміст молодшого додаткового розряду
(перед початком множення
=0).
Приклад 30.
Складемо цифрову діаграму множення
чисел Х=-5/16
і Y=-15/16
у доповняльному коді по алгоритму з
перетворенням цифр множника (табл. 31).
Зауважимо, що
і
.
Таблиця 31
-
ЛЧК
Пояснення
1,101
11,10
111,1
1111,
1111
1
1
0
1
1,
0
1
1
0
0
11,0001
00,00000000
00,1111
000
001
010
011
100
END
Вихідний стан
Результат підсумовування Зсув
Зсув,+0
Результат підсумовування Зсув
Результат підсумовування Зсув
+0
00,1111
00,01111
00,001111
11,0001
11,010011
11,1010011,
00,1111
00,1001011
00,01001011
00,0000
00,01001011
Приклад 31. Складемо цифрову діаграму множення чисел Х=9/16 і
Y=-12/16
у доповняльному коді за алгоритмом на
рис.29 (табл. 33). Зауважимо, що
й оскільки
,
то в цьому випадку цифра
не робить впливи на процес множення
(табл.32).
Таблиця 32
-
ЛЧК
Пояснення
0,100
1
0
11,0100
00,00000000
000
Вихідний стан
11,0100
11,0100
Результат підсумовування
00,10
0
1
11,10100
001
Зсуву
000,1
0
0
11,110100
010
Зсуву
0000,
1
0
11,1110100
011
Зсуву
11,0100
11,0010100
Результат підсумовування
0000
0
1
11,10010100
100
Зсуву
Z
END
Приклад 32.
Складемо цифрову діаграму множення
чисел
і
на доповняльному коді за алгоритмом на
рис. 29 (табл. 33). Зауважимо, що
.
Таким чином,
,
тобто,
.
Як і слід було очікувати, результат
множення тут такий самий, як і в
попередньому прикладі (тобто,
),
незважаючи на іншу послідовність
мікрооперацій для його одержання.
Таблиця 33
-
ЛЧК
Пояснення
1,011
1
0
00,1100
00,00000000
000
Вихідний стан
11,0100
11,0100
Результат підсумовування
11,01
1
1
11,10100
001
Зсуву
111,0
1
1
11,110100
010
Зсуву
1111,
0
1
11,1110100
011
Зсуву
00,1100
00,1010100
Результат підсумовування
1111
1
0
00,01010100
100
Зсуву
11,0100
11,10010100
Результат підсумовування
Z
END