![](/user_photo/2706_HbeT2.jpg)
5.2. Алгоритми множення в доповняльному коді з
обробкою знакових розрядів
Розглянемо тепер варіанти множення чисел у доповняльному коді, коли знакові розряди обробляються разом з числовими розрядами. При цьому будемо вважати, що вага знакового розряду дорівнює одиниці.
1. Нехай
,
тоді
.
Такий варіант не відрізняється від
множення додатних операндів без
врахування знаків.
2.
,
тоді
,
a псевдодобуток
.
Правильний добуток за цим варіантом
повинен бути записаний як
.
Звідси випливає
.
Для одержання правильного результату
і його знака до псевдодобутку необхідно
додати доповняльний код числа -2Х.
3.
.
Аналогічно попередньому можна показати,
що за цим варіантом вимагається корекція
.
4.
,
.
Тоді псевдодобуток
.
Тому що істинний добуток
,
то за цим варіантом множення необхідна
корекція
.
Для компенсації числа 4
ніяких операцій виконувати не треба,
тому що в двійковій системі це число в
розрядах з вагами
і
буде мати нулі.
Зауважимо, що при
множенні в доповняльному коді за кожним
з варіантів другої групи в процесі
додавання С
до
дуже важливо дотримувати відповідність
ваг розрядів псевдодобутку і коригувальної
поправки. Це викликано тим, що псевдодобуток
,
отриманий за правилами множення чисел
у прямому коді, містить
розряди (
-
довжина числової частини операндів), з
яких два старших розряди відносяться
до розрядів з цілими вагами, але не мають
змісту знакових розрядів. (Зміст цих
розрядів неможливо визначити, тому що
цифри в них є результатом підсумовування
часткових добутків, що складаються, у
свою чергу, з розрядних добутків трьох
різних типів: а) цифр числової частини
операндів, б) знакових цифр на "числові"
цифри операндів, в) тільки знакових
цифр). Обумовлена ж шляхом додавання-віднімання
і, можливо, зсуву коригувальна поправка
С має
лише один розряд з цілою вагою, цифра в
якому дійсно є знаковою цифрою. Тому в
процесі корекції рівноважні розряди в
і С
слід визначати, орієнтуючись на положення
коми.
Приклад 2.
Скласти цифрову діаграму множення чисел
і
в доповняльному коді з обробкою знакових
розрядів і корекцією в кінці операції
(табл.2). Операцію множення виконати з
використанням першого основного
алгоритму.
Для виконання
операції множення знаходимо доповняльні
коди операндів:
та величину корекції, яка обчислюється
за формулою
.
Таблиця 2
-
→
→
ЛЧК
Пояснення
0 101 0
1 1001
0 000000000
000
Вихідний стан
0 010 1
0 000000000
001
Зсув
1 1001
1 100100000
Результат підсумовування
0 001 0
0 110010000
010
Зсув
0 000 1
0 011001000
011
Зсув
1 1001
1 111101000
Результат підсумовування
0 000 0
0 111110100
100
Зсув
0 110000000
, корекція
1 101110100
Результат корекції
Таким чином
тобто,
.