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
Результат корекції
Таким чином тобто, .