Операційні пристрої для множення чисел в доповняльних кодах призначені для перетворення доповняльних кодів співмножників і в доповняльний код добутку :
= * ,
де = .
Для співмножників і чотирирозрядного пристрою зображення операндів згідно з правилами формування доповняльного коду визначаються за формулами:
= (16 + А)m16; = (16 + B)m16.
Операндам пристрою , відповідає діапазон подання числових змінних А і В у проміжку між (-8) і (+7). Тому, очевидно, діапазон подання добутку (А * В) визначається інтервалом числової осі між (+64) і (-56). Звідси випливає, що в пристрої множення чотирирозрядних доповняльних кодів і для машинного подання добутку потрібно використовувати восьмирозрядний формат доповняльного коду, тобто для представлення результату потрiбно застосовувати регістр подвійного формату.
Машинне зображення позитивного множника в доповняльному коді подається, як відомо, таким же чином, як і в прямому коді, тобто
0 MB(3/1) = b3 × 22 + b2 × 21 + b1 × 20,
де MB(3/1) – трирозрядний модуль додатного множника В;
b3, b2, b1 – двійкові цифри (0 або 1) трирозрядного модуля множника;
22, 21, 20 – вагові коефіцієнти числових розрядів b3, b2 і b1 множника.
Із виразу випливає, що за умови В > 0 добуток = * визначається за формулою:
= * = * (b3 × 22 + b2 × 21 + b1 × 20) =
= ( * b3 ) × 22 + ( * b2 ) × 21 + ( * b1 ) .
Звідси випливає, що добуток = ( * ) визначається сумою часткових добутків Аi = ×bi. При цьому підсумовуються часткові добутки тільки тих розрядів множника, для яких bi = 1. Зазначимо також, що значення кожного значущого часткового добутку пропорційно вазі позиції двійкового множника (bi) і змінюється в два рази при переході від поточого до сусіднього розряду множника. Алгебричне підсумовування часткових добутків Аi може виконуватися за будь-яким із чотирьох базових алгоритмів ("А", "Б" ,"В" ,"Г") з дотриманням звичайних правил додаванням доповняль-них кодів. Один із варіантів множення доповняльних кодів за В > 0 наведено на рис. 2.3.
Примітки
| ±
| 7 АК 1
| ±
| 3 РВ 1
| ±
| 6 РА 1
|
0 =
[(-7)*4]DK =
| 0 0 000 000,
1 1 100 100,
| 0 101 ,
РВ(4) = 0
1 010 ,
РВ(4) = 1
0 100 ,
РВ(4) = 0
1 000 ,
РВ(4) = 1
| 1 001 000,
1 100 100,
1 110 010,
1 111 001,
|
[(-7)*4]DK =
[(-7)*1]DK =
| 1 1 100 100,
1 1 111 001,
|
[(-7)*5]DK =
|
1 1 011 101,
|
Рисунок 2.3 – Приклад множення чисел у доповняльних кодах за алгоритмом “Г “
Якщо В < 0 подання множника В у доповняльному коді має вигляд:
1 ,
де 1 - ознака від’ємних чисел у доповняльному коді;
- цифрова частина доповняльного коду від’ємних чисел В.
Згідно з визначенням доповняльного коду машинне зображення від’ємних чисел В (В = -МВ) обчислюється за формулою:
1 = 16 + В,
де (16 + B) < 16.
Із цього виразу випливає, що числова змінна В множника пов’язана з його машинним поданням співвідношенням:
В = 1 - 16 = 1×23 + - 16 =
=(- 1)×23 + = ( 2.7 )
де - позначення цифри (-1) в трійковій системі числення (1, 0, ).
Звідси, наприклад, для 1 011 маємо:
В = 011 = (-1)×23 + 0×22 + 1×21 + 1×20 =
= (-8) + (+2) + (+1) = -510 = -1012 .
Таким чином, згідно з (2.7) множення доповняльних кодів за В<0 потрібно виконувати за співвідношенням:
де АDK ×(-1)×23 = (- АDK )×23 – код корекції суми часткових добутків множе-ного i цифрової частини множника , так званий код коригування суми часткових добутків за Робертсоном.
Підсумовування часткових добутків ( ) може виконуватися звичайним способом за будь-яким із чотирьох базових алгоритмів ("А", "Б", "В", "Г") iз дотриманням звичайних правил додавання доповняльних кодів. Код корекції Робертсона (- )DK (при NB=1)формується за співвідношен-ням:
Варіант множення доповняльних кодів за алгоритмом Робертсона при B< 0 подано на рис.2.4.
Примітки
| ±
| 7 АК 1
| ±
| 3 РВ 1
| ±
| 3 РА 1
|
0 =
[(-7)*8/8]DK =
| 0 0 000, 000
1 1 001,
| 1 01 1 ,
РВ(1) = 1
1 1 0 1 ,
РВ(1) = 1
1 1 1 0 ,
РВ(1) = 0
1 1 1 1 ,
РВ(1) = -1
| 1 001,
|
[(-7)*8/8]DK =
[(-7)*4/8]DK =
[(-7)*8/8]DK =
| 1 1 001, 000
1 1 100, 100
1 1 001,
|
[(-7)*12/8]DK =
[(-7)*6/8]DK =
[(-7)*3/8]DK =
[(+7)*8/8]DK =
| 1 0 101, 100
1 1 010, 110
1 1 101, 011
0 0 111,
|
[(+7)*5/8]DK =
*23
(+7)*5 =35 =
| 0 0 100, 011
*23
0 0 100 011,
|
Рисунок 2.4 – Приклад множення чисел у доповняльних кодах за алгоритмом Робертсона_А: (В (множник) < 0, А (множене)< 0)
Структурна схема пристрою для множення чисел у доповняльних кодах за алгоритмом «А» із корекцією результату за алгоритмом Робертсона подана на рис.2.5.
При кожному зверненні до блока множення подається сигнал «Пуск». За сигналом «Пуск» керуючий автомат (КА) перемикається в активний стан і формує початкові керуючі сигнали С0АК і С3СТ, за якими онуляється акуму-лятор (за сигналом С0АК) і лічильник (СТ) перемикається в початковий стан (за сигналом С3СТ). Потім у залежності від поточного стану змінної РВ(1) у кожному циклі множення до акумулятора додається код нуля або вміст регістра А (тобто ). Кожний цикл закінчується зсувом акумулятора АК-РС і регістра множника РВ вправо, а вміст лічильника зменшується на одиницю. Після вичерпання цифрової частини множника ознака нуля лічильника встановлюється у стан «1». За цим сигналом у наступному циклі множення за РВ(1)=1 до акумулятора додається , тобто виконується корекція результату множення доповняльного коду множеного на цифрову частину доповняльного коду множника .
Рисунок 2.5 – Структурна схема арифметичного пристрою для
множення чисел у доповняльних кодах по варiанту “А” з
корекцією (виправленням) результату за методом Робертсона