ОФК
.pdfприкладах (табл. 5.4.) додавання двійкових чисел удоповняльних кодах. В прикладах 1 і 4 отримані суми не відповідають дійсним, тобто відбулось переповненнярозрядної сітки.Утакихвипадкахрезультатунеіснує.
Переповнення можевідбутися, якщододанки маютьоднакові знаки. Ознакоюпереповненнярозрядноїсіткиможеслугуватипротилежністьзнака суми,щоотримана, знакам доданків.
|
|
|
Таблиця 5.4 |
|
|
|
|
|
|
1 |
2 |
3 |
4 |
|
A 0,1101; |
A 0,1101; |
A 0,1101; |
A 0,1101; |
|
B 0,0111; |
B 0,0111; |
B 0,0111; |
B 0,0111; |
|
A B 0 |
A B 0 |
A B 0 |
A B 0 |
|
Aдоп 0,1101 |
Aдоп 0,1101 |
Aдоп 1,0011 |
Aдоп 1,0011 |
|
Bдоп 0,0111 |
Bдоп 1,1001 |
Bдоп 0,0111 |
Bдоп 1,1001 |
|
A B доп 1,0100; |
A B доп 10,0110; |
A B доп 1,1010; |
A B доп 10,0110; |
|
A B пр 1,1100 |
A B пр 0,0110 |
A B пр 1,0110 |
A B пр 0,1100 |
|
|
|
|
|
|
5.2.1. Додавання чисел у модифікованому доповняльному коді
Підчасдодаваннядвійковихчиселудоповняльномукодіобов’язковою є умова, щоб кожний з доданків і їхня сума за абсолютним значенням були меншимивідодиниці.
Доповнювальнікоди чиселдодаються порозрядно. Причомузнакові розрядидодаютьсяякзвичайнірозрядицілихчисел. Одиницяпереносу,яка виникає під час додавання знакових розрядів, не враховується, тобто відкидається. Сумуотримуємоудоповняльномукоді.
Приклад 5.4. Додатиумодифікованомудоповняльномукодідвійковічисла A і B за умови :
1. A 0; B 0; A B 0. |
|
|
|
|
|
A 0,1101; |
|
Aм |
00,1101 |
||
B 0,0001 |
+ |
доп |
|
|
|
B м |
00,0001 |
||||
|
|
доп |
|
|
|
|
|
A B м |
|
00,1110; |
|
|
|
|
доп |
|
|
|
|
A B м |
00,1110 |
||
|
|
|
пр |
|
|
80
2. A 0; B 0; A B 0. |
|
|
|
|
|
A 0,1101; |
|
Aм |
00,1101 |
||
B 0,0001 |
+ |
доп |
|
|
|
B м |
11,1111 |
||||
|
|
доп |
|
|
|
Одиниця переносу зі |
A B м |
|
100,1100; |
||
старшого знакового |
|
|
доп |
|
|
розряду не |
A B пмp |
00,1100 |
|||
враховується |
|||||
3. A 0 ; B 0; A B 0. |
|
|
|
|
|
A 0,1101; |
|
Aм |
11,0011 |
||
B 0,0001 |
+ Bдопм |
00,0001 |
|||
|
|
доп |
|
|
|
|
A B м |
|
11,0100; |
||
|
|
|
доп |
|
|
|
A B м |
11,1100 |
|||
|
|
|
пp |
|
|
4. A 0; B 0; A B 0. |
|
|
|
|
|
A 0,1101; |
|
Aм |
11,0011 |
||
B 0,0001 |
+ |
доп |
|
|
|
B м |
11,1111 |
||||
|
|
доп |
|
|
|
Одиниця переносу зі |
A B м |
|
111,0010; |
||
старшого знакового |
|
|
доп |
|
|
розряду не |
|
A B прм |
11,1110 |
||
враховується |
|
У разі переведення отриманих від’ємних результатів у прямий код переводиться саме число і не переводиться знак (див. приклади 3 і 4) або число із спотвореним знаком беруть за абсолютним значеням.
5.2.2. Додавання у модифікованому оберненому коді
Реалізуєтьсятаксамо, яківдоповняльномукоді.Оберненікодичисел додаютьсяпорозрядно,знаковірозрядидодаютьякрозрядицілихчисел.Суму отримуємо у оберненому коді.
Відмінністьполягаєутому, щоодиницюпереносуіз старшогознако-
вогорозряду, якщовоназ’являється,потрібнододатидомолодшогорозряду суми, тобтовиникає циклічний перенос.
81
Приклад 5.5. Додати у модифікованому оберненому коді числа А і В за умови:
1. A 0; B 0; A B 0. |
|
|
|
|
A 0,1101; |
Aм |
00,1101 |
|
|
B 0,0001 |
+ Bобм |
00,0001 |
|
|
|
об |
|
|
|
|
A B м |
00,1110; |
|
|
|
|
об |
|
|
|
A B м |
00,1110 |
|
|
|
|
пр |
|
|
2. A 0; B 0 ; A B 0. |
|
|
|
|
A 0,1101; |
Aм |
00,1101 |
|
|
B 0,0001 |
об |
|
|
|
+ B м |
11,1110 |
|
||
|
об |
|
|
|
|
A B м |
100,1011; |
|
|
|
|
об |
|
|
|
Циклічний перенос |
+1 |
||
|
A B м |
00,1100; |
|
|
|
|
об |
|
|
|
A B м |
00,1100 |
|
|
|
|
пp |
|
|
3. A 0 ; B 0; A B 0. |
|
|
|
|
A 0,1101; |
Aм |
11,0010 |
|
|
B 0,0001 |
+ Bобм |
00,0001 |
|
|
|
об |
|
|
|
|
A B м |
11,0011; |
|
|
|
|
об |
|
|
|
A B м |
11,1100 |
|
|
|
|
пр |
|
|
4. A 0 ; B 0 ; A B 0. |
|
|
|
|
A 0,1101; |
Aм |
11,0010 |
|
|
B 0,0001 |
об |
|
|
|
+ B м |
11,1110 |
|
||
|
об |
|
|
|
|
A B м |
111,0000; |
|
|
|
|
об |
|
|
|
Циклічний перенос |
+1 |
||
|
A B м |
11,0001; |
|
|
|
|
об |
|
|
|
A B м |
11,1110 |
|
|
|
|
пр |
|
|
82 |
|
|
|
|
5.2.3. Переповнення розрядної сітки під час додавання у модифікованих машинних кодах
Переповненнярозрядної сіткиуразідодавання модифікованихкодів можливелишеякщо, колидоданкимаютьоднаковізнаки.Такепереповнення виявляється способом порівняння знакових розрядів отриманої суми. Признаком переповнення є неспівпадання цифр, які створюються у двох знакових розрядах суми, тобторезультат неможливовіднести дожодногоз модифікованихкодів. Пояснимоцена такихприкладах.
Приклади5.6.:
1. A 0,1101; |
2. A 0,1101; |
||||
B 0,0111; |
B 0,0111; |
||||
A B 0 |
|
A B 0 |
|
||
Aм |
00,1101 |
Aм |
11,0011 |
||
доп |
|
|
доп |
|
|
+Вм |
00,0111 |
+Вм |
11,1001 |
||
доп |
|
|
доп |
|
|
A B м |
01,0100 |
A B м |
110,1100 |
||
|
доп |
|
|
доп |
|
втрачається
Яквидноз прикладів, узнаковихрозрядах отриманоїсумидодатних доданківмаємокомбінацію“01”,від’ємних–“10”,якісвідчатьпроперепов- неннярозрядноїсітки.
5.3. Додавання двійкових чисел з рухомою комою
Як і під час операцій над числами з фіксованою комою, процедура відніманнязамінюєтьсяпроцедуроюдодаваннязперетвореннямпрямихкодів чисел удоповняльні або обернені.
Додавання і віднімання чисел з рухомою комою реалізується за три
етапи.
1. Вирівнювання порядків. Для чисел з рухомою комою вага Ni одиниці i -горозрядумантисивизначаєтьсянетількипозицієюцьогорозряду,
але і порядком p числа тобто Ni d p i , де i – номер позиції, рахуючи вправовідкоми.
Придодаваннімантиснеобхідно, щобвагиїходнойменнихрозрядів чиселбулиоднаковими. Дляцьогомантисизсуваютьоднащодоодноїтак,
83
щобїхніпорядки булиоднаковими.Щоб, вирівнюючипорядкинеотримати мантиси, більшої за одиницю, їх треба вирівнюватидо більшого порядку.
Для цього мантису з меншим порядком зсуваєть вправо (у бік молодших розрядів)на кількістьрозрядів,щодорівнюєрізниціпорядків.
2.Додавання мантис. Додавання мантис з вирівняними порядками виконуєтьсяаналогічнододаваннючиселзфіксованоюкомою. Приалгебраїчному додаванні для представлення від’ємних мантис використовується доповняльний або обернений модифікований код.
Сумамантис–цемантисарезультату.Порядокрезультату–вирівняний порядокдоданків, тобтопорядокбільшогочисла.
3.Нормалізаціярезультату, якщоценеобхідно.
5.3.1. Додавання двійкових чисел з рухомою комою з
основою d 2
Урезультаті виконаннядодаванняможутьвиникати тривипадки.
Випадок 1.Додаваннянеспричиняєпереповненнярозрядноїсіткиі порушеннянормалізації.
Приклад5.7. Додати: A 0,1101 ,йогопорядок+101 і B 0,1100 , йогопорядок+011.
1-й етап. Вирівнювання порядків. Для визначення того, на скільки позицій(розрядів)потрібнозсунути мантисучисла B , спочаткувизначимо різницюміж порядками.Дляцьоговідпорядкучисла A (більшийпорядок) віднімаємопорядок числа B (менший порядок). Причомуоперацію відніманнязамінюємооперацієюдодавання умодифікованихдоповняльнихкодах:
pAмдоп pBмдоп 00,101 11,101 100,010
відкидається
Відповідно мантису числа B зсуваємо праворуч на два розряди:
B 0,001100.
2-й етап.Переводимомантисиобохчиселумодифікованийдоповнювальнийкод:
M A доп 11,0011; |
M B доп 00,0011. |
3-йетап.Додаваннямодифікованихдоповнювальнихкодівіодержання результатуудоповняльномукоді, доякогодописуємовирівняний(спільний) порядок:
84
M A доп M B доп 11,0011 00,0011 11,0110 |
101. |
4-й етап. Переводимо отриманий результат з доповняльного коду у прямийкод:
A B 11,1010 |
101. |
Виконуючи це переведення, залишаємо без зміни від’ємний знак результату.
Випадок2.Уразіалгебраїчногододаваннямантисможливеотримання результату, меншогоза 0,12 ,тобтопорушеннянормалізаціїсправавідкоми. Ознакою такого порушення є наявність у мантисі результату, після переведенняупрямийкод,одногочидекількохпідряднулівсправа відкоми. Підчасвідновлення нормалізаціїмантисазсуваєтьсявлівонатакукількість розрядів, щоб старшацифрамантисибула відмінноювіднуля (тобтодорівнювала 1). Порядок суми зменшується на кількість одиниць, яка дорівнює кількостізсувівмантисипідчаснормалізації.Якщовсірозрядимантисисуми дорівнюють нулю, то нормалізацію не виконують. Порядок суми
встановлюєтьсянульовим.
Приклад5.8. Додатидвачисла: A 0,10100 10 101; B 0,10110 10 100 .
1-й етап. Для вирівнюванняпорядків доданківпотрібновідпорядку числа A відняти порядок числа B . Віднімання замінимо додаванням порядків умодифікованомудоповняльномукоді.
pAмдоп 00,101
+pBмдоп 11,100
pA pB допм 00,001.
Через те, що pA на одиницюбільше за pB , тозсуваєтьсявправона одинрозряд мантисачисла B , тобто M B пр 1,101100 1,01011 .
2-й етап. Додаємо мантиси чисел A і B у модифікованому доповняльномукоді:
+M Aмдоп 00,10100 M Bмдоп 11,10101
M A M B допм 00,01001.
Порушення нормалізації праворуч
85
Тут ми маємо додатний результат у доповняльному коді, тобто він співпадаєз прямим кодом.
3-й етап. Нормалізуєморезультат 0,01001 10 101, длячогозсуваємо мантисусуми на один розряд влівоі від значення порядкусуми віднімаємо одиницю. Отримуємонормалізований результат: A B 0,1001 10 100 .
Випадок 3. У разі додавання мантис, за абсолютним значенням,
менших від одиниці, можливі випадки переповнення розрядної сітки – порушення нормалізації зліва від коми. Ознакою такого порушення нормалізації слугує поява у знакових розрядах модифікованого коду суми різних цифр (наприклад, 01, XXX... або 10, XXX... ). Для відновлення нормалізації мантиса суми зсувається на 1 розряд вправо, а порядок суми
зменшуєтьсяна 1–ценормалізаціявправо.
Приклад5.9. Додатидвачисла: A 0,10100 10 011 і B 0,11100 10 101 .
1-йетап.Вирівнюємопорядкидоданків:
pAмдоп 00,011
+pBмдоп 11,011
pA pB допм 11,110
pA pB прм 11,010
Яківпопередньомуприкладі,длявідніманнявикористовуємомодифі-
кованийкод. Оскільки pA надвіодиниціменше від pB ,тозсуваємовправо мантису M A пр 0,101000 1,00101 .
2-йетап.Додаємомантиси:
+M Aмдоп 00,00101 M Bмдоп 00,11100
M A MB допм 01,00001.
Порушення нормалізації
3-й етап. Нормалізуєморезультат A B 01,00001 10 101 , длячого зсуваємомантисуна одинрозрядвправоізбільшуємопорядокнаодиницю. Отримаємонормалізованийрезультат: A B 00,100001 10 110 .
Результат алгебраїчного додавання може перевищити максимальне можливечисло, якеподається укомп’ютері. Цепроявляєтьсяяк виникнення порядку,щопіслянормалізації перевищуємаксимальнодопустимийрезультат.
5.3.2. Додавання двійкових чисел з рухомою комою з
основою d 16
Під час виконання операції додавання чисел з рухомою комою з основою d 16 у разі вирівнювання порядків і нормалізації виконується зсувмантисина кількістьрозрядів,щодорівнює абократне4.
Розглянемоприкладивиконанняопераціїдодаваннячиселз рухомою комою з шістнадцятковою основою. Аналогічно до додавання з основою d 2 , тутможливепорушеннянормалізаціїсправа абозліва.
Умовно приймемо, що числа з рухомою комою мають формат,
довжина якого 4 байти: 1 байт використовують для запису знака числа та характеристикиі3 байти–длязаписумантисичисла.
Приклад5.8. Додатичисла A 324 16 і B 14A6 16 .
1-й етап. Визначимо характеристики чисел A і B , поданих у нормалізованійформі:
A 0,324 16 3 , |
B 0,14A6 16 4 . |
Порядкичисел A і B відповіднодорівнюють: |
|
pA 0112 , |
pB 1002 , |
аїххарактеристикизапишутьсяутакомувигляді:
pAx 011 1000000 1000011; pBx 100 1000000 1000100.
Запишемо числа A і B у нормалізованій формі, використовуючи умовний формат чисел:
Знак |
Характеристика |
|
Мантиса |
|
|
||
A 0. |
100 |
0011 |
0011 0010 |
0100 |
0000 |
0000 |
0000 |
B 1. |
100 |
0100 |
0001 0100 |
1010 |
0110 |
0000 |
0000 |
86 |
87 |
2-йетап.Вирівнюємохарактеристики.Дляцьоговідніманняхаракте- ристики виконуємо у модифікованомудоповняльному коді:
pAx доп 00,1000100
+pBx доп 11,0111101
pA pB допx 100,0000001.
втрачається
Різницяхарактеристикдорівнює+1,відповідно,зсуватипотрібноман-
тису числа A вправо на один шістнадцятковий розряд. Зсуваємо мантису числа A :
Знак |
Характеристика |
Мантиса |
A 0. |
100 0100 |
0000 0011 0010 0100 0000 0000 |
3-й етап. Додаємо мантиси чисел A і B умодифікованому допов-
няльномукоді:
Знак |
|
|
Мантиса |
|
|
|
M A доп 00. |
0000 0011 0010 0100 0000 0000 |
|||||
M B доп 11. |
1110 |
1011 |
0101 |
1010 |
0000 |
0000 |
M A M B доп 11. |
1110 |
1110 |
0111 |
1110 |
0000 |
0000 |
Переповнення розрядної сітки немає. Мантиса результату вийшла від’ємною, відповіднопотрібноперейтидопрямогокоду:
M A M B пр 11. 0001 0001 1000 0010 0000 0000.
Сума мантис у прямомукоді нормалізована.
Знак |
Характеристика |
Мантиса |
A B 11. |
100 0100 |
0001 0001 1000 0010 0000 0000 |
Записуємонормалізований результат додавання чисел A і B : |
||
або A B |
0,1182 16 4 . |
|
16 |
|
|
Приклад 5.9. Виконати операцію додавання чисел A 10B3 16 і
B C7 16 .
88
1-й етап. Визначимо характеристики чисел A і B , поданих у нормалізованійформі:
A 0,10B3 16 4 і |
B 0,C7 16 2 . |
Порядкичисел A і B відповіднодорівнюють: |
|
pA 100 , |
pB 010 , |
аїххарактеристики запишутьсяутакомувигляді:
pAx 100 1000000 1000100; pBx 10 1000000 1000010.
Запишемочисла A і B унормалізованійформівумовномуформаті:
Знак |
Характеристика |
Мантиса |
|
|
|
A 0. |
100 |
0100 |
0001 0000 1011 0011 |
0000 |
0000 |
B 1. |
100 |
0010 |
1100 0111 0000 0000 |
0000 |
0000 |
2-йетап.Вирівняємохарактеристики:
pAx доп 00,1000100
+pBx доп 11,0111110
( pA pB )допx 100,0000010.
втрачається
Черезте,що p Ax на2одиницібільшеза pBx ,тозсуватипотрібномантису числа B вправонадвашістнадцятковірозряди,тобтодвідвійковітетради.
Зсуваємо мантису числа B :
Знак |
Характеристика |
Мантиса |
B 1. |
100 0100 |
0000 0000 1100 0111 0000 0000 |
3-йетап. Додаємомантиси чисел A і B удоповняльномумодифіко- ваномукоді:
M A доп 00. |
0001 |
0000 |
1011 |
0010 |
0000 |
0000 |
M B доп 11. |
1111 |
1111 |
0011 |
1001 |
0000 |
0000 |
M A M B доп 100. |
0000 |
1111 |
1110 |
1100 |
0000 |
0000 |
втрачається
89
Сумамантис додатна, результатдодаваннячиселненормалізований,
тобтомаємопорушення нормалізації вправо: |
|
||
Знак |
Характеристика |
|
Мантиса |
A B 0. |
100 0100 |
0000 1111 |
1110 1100 0000 0000 |
4-й етап. Нормалізацію результатів додавання виконуємо зсувом мантисирезультатувлівонаодиншістнадцятковийрозряд (однутетраду), а відхарактеристикивіднімаєтьсяодиниця.
Результатдодаванняунормалізованійформі:
Знак |
Характеристика |
|
Мантиса |
A B 0. |
100 0011 |
1111 1110 |
1100 0000 0000 0000 |
або A B |
0, FEC 163 FEC . |
|
|
16 |
|
16 |
|
5.4. Множення двійкових чисел із знаком
Алгоритми виконання операції множення двійкових чисел ґрунтуються на правилах множення однорозрядних чисел, а операція множеннядвохчиселзводитьсядоциклічноговиконаннясукупностіоперацій множення множеного на послідовність розрядів множника і відповідного зсуву множеного і множника.
Алгоритми виконання операції множення для різних форм подання чиселвідрізняються незначно. Головнівідмінностіполягають увизначенні величини порядкудобуткууразі множення чисел з рухомою комою і місця коми під час множення чисел з фіксованою комою.
Головноювідмінністю єнеобхідністьвраховуватинаявність знаківу числах. Від’ємними можуть бути як множене, так і множник. Як відомо, від’ємний знак подається одиницею, що комп’ютер сприймає як старший розрядчисла.Тоді результатопераціїмноження, колимноженеабомножник від’ємний,будехибнимізначенняпохибкизалежитьвідтого,якез двохчисел
євід’ємним.
Уразі подання від’ємних чисел у доповняльному або оберненому коді,множенняздійснюєтьсязаправиламимноженняпрямих кодів(з відповідним перетворенням кодів множників і добутку, код знака добутку визначаєтьсязгіднозтабл.5.5),абобезпосередньоуцихкодахізурахуванням їхніхспецифічнихякостей, ітаких,щомаютьдовільнукомбінаціюзнаків.
90
Таблиця 5.5.
Код знака |
Код знака |
Код знака |
числа А |
числа В |
добутку |
|
|
|
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
Уразімноження двохчисел, щозадані упрямихкодахі з довільною комбінацієюзнаків,код знакадобуткувизначаєтьсязгіднозтабл.5.5.
Множеннячиселвоберненомуідоповнювальномукодахвиконується за правилами множення прямих кодів (з відповідним перетворенням кодів співмножників і результату) або безпосередньо у цих кодах з врахуванням їхніхспецифічнихвластивостей.
5.4.1. Множення чисел у форматі з фіксованою комою
Цяопераціястановитьосновуусіхметодівмноженнябудь-якихчисел,
поданихуіншихформатах.Длямноженнявеликезначеннямаютькодподання чисел і, у деяких випадках, основа системи числення. Багато методів за алгоритмом виконання множення для різних систем числення інваріантні.
Місце коми у множенні чисел з фіксованою комою не відіграє ролі і у результаті завжди наперед відоме. Будемо вважати, що співмножники становлятьсобою правильнідроби.
У разі множення дійснихчисел з фіксованою комою множене:
|
n |
|
|
A a0d 0 aid i |
a0 a |
|
i 1 |
|
|
n |
|
імножник |
B b0d 0 bid i |
b0 b |
|
i 1 |
|
створюютьдобутокзгіднозтакимвиразом:
|
Z A* B z0d |
0 |
ab; |
||||
|
|
||||||
|
|
|
a |
|
b , |
|
|
z |
0 |
0 |
|
|
|||
|
|
|
0 |
|
|
де ai ,bi , zi 0,1,...,d 1 – цифрові розряди; a0 ,b0 , z0 0,1 –знаковірозряди.
91
З урахуванням особливостей подання чисел у різних форматах кодуваннядобуток загалом має вигляд
Z A B a a0 b b0 ab a0b ab0 a0b0 .
Залежновідкодуподаннячиселрезультат маєрізнізначення, якідля створення правильного добутку необхідно коригувати або попередньо перетворюватиспівмножники.
Множення чисел удоповняльних кодах відрізняється від множення чисел без знака тим, що власне знаковий розряд бере участь в операції множення, а самічислапідчас множеннясприймаютьсяякчисла упрямих кодах.
Якщо n – розрядний множник B 0 , то у доповняльному коді він будетаким:
0b1b2b3...bn 1 ,де b1b2b3...bn 1 B .
Множення, починаючи з молодших розрядів, будь якого m -
розрядного числа A на такий множник буде забезпечувати правильний результат. Необхідно врахувати, що під час зсуву вправо від’ємного проміжногодобуткуукрайнійзліва розрядзаписується одиниця.
Розглянемоприкладимноження додатногота від’ємногомноженого ( A та A )надодатниймножник( B )удоповняльнихкодах.
Приклад5.10.
знакові розряди чисел |
|
|
|
знаковий розряд |
|
* |
0,1001 |
|
0,0101 |
|
|
|
0,1001 |
копія множеного |
+ |
0,01001 |
зсув множеного |
0,001001 |
зсув |
|
|
0,1001 |
|
|
0,101101 |
|
|
0,0101101 |
зсув |
|
0,00101101 |
зсув |
знак добутку Результат: A B 45256 .
92
Приклад5.11. |
A 9 16 |
Aдоп 1,0111 |
|
|
B 5 16 |
Bдоп Bпр |
0,0101 |
|
знакові розряди чисел |
|
знаковий розряд
1,0111
*0,0101
1,0111
|
|
|
+ |
1,10111 |
|
|
зсув множеного |
|||||||||||
|
|
|
1,110111 |
|
зсув |
|||||||||||||
|
|
|
|
|
|
|
|
1,0111 |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
1,010011 |
|
|
||||||||
|
|
|
|
|
|
|
|
1,1010011 |
|
зсув |
||||||||
знак добутку |
1,11010011 |
|
зсув |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||
Результат: |
|
A B 45 256 . |
|
|
|
|
||||||||||||
Якщомножник B 0 , тоудоповняльномукоді він буде таким: |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
1b'b |
' |
b' ...b |
' |
, |
|||
|
|
|
|
|
|
|
|
1 |
2 |
3 |
n 1 |
|
||||||
де b'b' ...b |
' |
|
1 |
|
B |
|
|
|
|
|
|
|
1. |
|
|
|||
|
|
|
|
B |
|
|
|
|||||||||||
1 2 |
n 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Утакомуразі–множеннябудь-якогочисла A навід’ємниймножник – результат буде більшим від правильного на величину A. Для отримання правильногозначеннядобуткунеобхіднопровести коригування, яке можна виконати на останньому кроці множення – під час множення на знаковий розрядмножника, віднімаючивідпроміжногодобуткумножене A.
Наведенінижчеприкладиілюструютьпроцедурумноженнядодатного абовід’ємногомноженогона від’ємний множник.
Приклад5.12. |
A 9 16 |
Aдоп Aпр 0,1001 |
|
B 5 16 |
Bдоп 1,1011 |
знакові розряди чисел
93
знаковий розряд
0,1001 * 1,1011 0,1001
+ 0,01001 |
зсув множеного |
0,1001 |
|
0,11011 |
|
0,011011 |
зсув |
+0,0011011 зсув
0,1001
0,1100011
+0,01100011 зсув
|
1,0111 |
A |
|
|
1,11010011 |
|
|
знак добутку |
|
|
|
Результат: A B 45 256 . |
|
|
|
Приклад5.13. |
A 9 16 |
Aдоп 1,0111 |
|
|
B 5 16 |
Bдоп 1,1011 |
знакові розряди чисел
знаковий розряд
1,0111
*1,1011
1,0111
+ 1,10111 |
зсув множеного |
|
|
1,0111 |
|
|
1,00101 |
|
+ |
1,100101 |
зсув |
1,11100101 |
зсув |
|
|
1,0111 |
|
|
1,0011101 |
|
+ 1,10011101 |
зсув |
|
|
0,1001 |
A |
|
0,00101101 |
|
знак добутку
5.4.2. Множення чисел у форматі з рухомою комою
Під час виконання операції множення чисел, що подані у формі з рухомою комою, їхні мантиси множаться як числа з фіксованою комою, а порядкидодаються. Діївиконуютьутакійпослідовності:
94
1.Визначаютьзнакдобутку, проаналізувавшизнаки співмножників(див.
табл.5.5.).
2.Визначають порядок добутку алгебраїчним додаванням порядків співмножників.
3.Перемножують мантисиспівмножників.
4.Якщо добуток вийшов ненормалізований, то виконують процедури нормалізаціїі закругленнярезультата.
Уобохвипадкахперевірканапереповненняобов’язкова.Але,оскільки реальнододаютьхарактеристики чисел, томноженнявиконується за такою формулою:
A1 A2 m1 2r1 m2 2r2 m1 m2 2r1 r2 l ,
де: r1 r2 l –характеристикадобутку. Знакдобуткувизначаютьзвичайним способом.
Нагадаємо,щопідчасреалізаціїалгоритмівматематичнихопераційу форматіз рухомоюкомоющоразу, колиздійснюєтьсятаабоіншапроцедура, щостосуєтьсяхарактеристикоперандіваборезультату, виконуєтьсяконтроль над переповненням і зникненням порядку, тобтоконтролюється умова:
0 r rmax , |
|
|
де rmax l pmax . |
|
|
Приклад 5.14. Перемножимо числа: A 0,00101101 і |
B 10000,1 у |
|
комп’ютеріз рухомоюкомою. Укоміркахкомп’ютера числа |
||
записанітак: |
|
|
A 0,101101000 |
1,010 ; |
|
B 1,100001000 |
0,101. |
|
(Тобторозряднасітка міститьдев’ятьрозрядівдлязбереженнямантиси і один для її знака, а також три розряди для збереження порядкуі один для знакапорядку.Комауприкладіумовнаі відділяєрозрядзнака).
1-йкрок. Визначеннязнака добутку:0 1 = 1.
2-йкрок.Визначенняпорядкудобутку:(-010)+(+101)=+011. 3-йкрок. Множення мантисспівмножників:
95
|
0,101101 |
Оскількикоміркамаєтількидев’ятьрозрядів, |
|
* 0,100001 |
останнітрирозряди результатубудутьвтрачені. |
||
+ |
101101 |
||
|
|||
|
101101 |
|
|
0,010111001101 |
|
Результатмноження мантис: M A M B 1,010111001.
4-йкрок:Нормалізація результату. Дляцьогозсуваємомантисувліво на 1 розряд і віднімаємо1 з сумарногопорядку.
Отримуємо остаточно: A B 1,1011110010 0,010 .
5.4.3. Пришвидшення операції множення
Операціямноження порівнянно зопераціямидодаванняівіднімання є довготривалою. Витрати часу на множення двох чисел у прямому коді можна оцінити такою формулою (у разі послідовного аналізу розрядів множника):
n
t множ. tзм pitсум , i 1
де tзм – часвиконання зміщеннячисла наодин розряд;
– час підсумовування на суматорі;
pi – вірогідністьпоявиодиниці врозрядахмножника; n –кількістьрозрядівмножника.
Для скорочення часу виконання операції множення застосовують апаратні та логічні методи. І ті і інші потребують додаткових витрат обладнання, які у разі використання апаратних методів збільшуються із зростанням розрядності співмножників. Апаратні способи призводять до ускладнення схеми помножувача, але не торкаються схеми керування. Додатковівитратиобладнанняпідчасреалізаціїлогічнихметодівнезалежать відрозрядностіоперандів, алесхемакеруванняускладнюється. Напрактиці пришвидшеннямноженнячастодосягаютькомбінацієюапаратнихілогічних методів.
Апаратні методи зводятьсядопаралельногообчислення проміжних добутків та зменшення кількості операцій додавання. У плані апаратної реалізаціїперемножувачіподіляютьна:
–матричні(Брауна, Бо-Вулі, Пезаріса);
–деревоподібні(Уоллеса, Дадда).
96
Логічніпідходидопришвидшеннямноженняможнаподілитинадві
групи:
–методи, щозменшуютькількістьопераційдодавання уразімноження
(алгоритмиБута, алгоритмЛемана);
–методи,щозабезпечуютьобробкудекількохрозрядівмножниказаодин крок(два розрядиувідповіднійверсії алгоритмуБута).
Розглянемо метод пришвидшення множення обробки двох розрядів множниказа одинкрок якнайнаочнішийінайпоширенішийдляцілихчисел, що подані у прямому коді. Як вже зазначалося, це ефективніша версія
алгоритмуБута.
Оскільки у такому разі під час виконання операції множення на кожномуцикліоперації аналізуютьодразудварозряди множника, тотаких циклів знадобиться n 2 , де n – довжина розрядної сітки множника без урахування знакового розряду. Ця кількість циклів записується в деякий лічильник SC .Післяобнуленнявмістулічильника SC процедурамноження зупиняється. Звичайноаналізують два молодші розряди множника, томув кінці кожного циклу виконується одночасне зміщення на два розряди праворуч зображеннясумипроміжних добутків( P )і множника. Причому утакий спосіб, щоб під час кожного такого зміщення черговий молодший розрядчисла P потраплявустаршийрозрядмантисимножника.Позначимо цю процедуру умовно як ПЗ (праве зміщення). Очевидно, що у такому разів добуток буде сформований у розрядній сітці, що була спочатку відведенадлямножника B .
Якщомножене A і множник B , а йогодвачергові молодшірозряди
b1b2 ,тозалежновідрезультатуаналізуцихрозрядівпередбачають такі дії:
Якщо |
b1b2 |
00 , то виконуються тільки процедури: ПЗ і |
SC |
|
SC 1. |
|
|
|
|
Якщо |
b1b2 |
01 , то виконуються процедури: P P A , |
ПЗ і |
|
SC SC 1. |
|
|
|
|
Якщо |
b1b2 |
10 , то виконуються процедури: зміщення множеного |
||
ліворуч 1розряд,тобтомноженняйогонадва, P P A , ПЗ і SC SC 1. |
||||
Якщо |
b1b2 |
11 , то виконуються тричі |
P P A і ПЗ , |
SC |
SC 1.
Коли SC 0 – операція множення закінчується.
97
Якзавжди, передпочатком самоїпроцедури множеннявизначається знак добутку, перевіряються на 0 A і B , і якщо якесь з них дорівнює 0, то добутку одразу присвоюється нульове значення.
Приклад5.15. Розглянемоприкладпришвидшеномноження 310 7810 ,тобто
|
|
коли A 3 ,а B 78 .Якщо n 10 ,то A 00000000112 , B |
||||||||
|
|
00010011102 , а |
SC 5 . У деякому регістрі P будемо |
|||||||
|
|
формувати проміжні добутки. |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
512 |
256 |
128 64 |
32 |
16 |
8 |
4 |
2 |
1 |
|
А |
|
|
|
|
|
множене |
||||
00 |
00 |
00 |
00 |
11 |
||||||
В |
00 |
01 |
00 |
11 |
10 |
множник |
||||
Р |
|
|
|
|
|
відповідь = 234 |
||||
00 |
11 |
10 |
10 |
10 |
1)Виконуємоаналіздвохмолодшихрозрядів множника B . b1b2 10 . Необхіднозсунути A на1 розрядвлівоідодатидо P .
+ |
P |
00 00 00 00 00 |
|
A |
00 00 00 01 10 |
зсув на 2 розряди P і B |
|
|
P |
00 00 00 01 10 |
|
|
P |
00 00 00 00 01 |
– – 10 00 01 00 11 B |
2) b1b2 11 , тричідодаємо A до P .
P00 00 00 00 01
+A 00 00 00 00 11
P00 00 00 01 00
+A 00 00 00 00 11
P00 00 00 01 11
+A 00 00 00 00 11
|
P |
00 00 00 10 10 |
зсув на 2 розряди P іB |
||
|
P |
00 00 00 00 10 |
– – 10 10 00 01 00 B |
||
3) |
b1b2 |
00 , зміщення на2 |
розряди P і B |
|
|
|
P |
00 00 00 00 00 |
10 10 10 00 01 |
B . |
|
4) |
b1b2 |
01 |
|
|
|
+ |
P |
00 00 00 00 00 |
|
|
|
A |
00 00 00 00 11 |
зсув на 2 розряди P і B |
|||
|
P |
00 00 00 00 11 |
|||
|
P |
00 00 00 00 00 |
– – 11 10 10 10 00 B |
|
|
5) |
b1b2 |
00 , зміщення на2 |
розряди P і B |
|
|
|
P |
00 00 00 00 00 |
00 |
11 10 10 10 |
B 23410 |
98
5.5.Ділення двійкових чисел із знаком
5.5.1.Ділення двійкових чисел, поданих у формі з фіксованою комою
Ділення чисел, поданих у формі з фіксованою комою можна також здійснитина двійковихсуматорахоберненогоі доповняльногокоду.
Як і у разі множення, ділення чисел із знаком може бути виконано переходом до абсолютних значень діленого і дільника, з подальшим присвоєннямчастцізнака„плюс”якщознакиділеногоідільниказбігаються
або “мінус” – уіншому разі.
Ділення чисел, поданих у доповняльному коді, можна здійснювати без переходу до модулів чисел. Розглянемо необхідні для цього зміни в
алгоритмібез відновленнязалишку.
Оскількеділенеідільникнеобов’язковомаютьоднаковізнаки,тодіїз частковимзалишком(додаванняабовідніманнядільника)залежатьвідзнаків
залишкутадільника івизначаютьсязгідноз табл.5.6.
|
|
Таблиця 5.6 |
|
|
|
|
|
Знак залишку |
Знак дільника |
Дії |
|
+ |
+ |
Віднімання дільника |
|
+ |
- |
Додавання дільника |
|
- |
+ |
Додавання дільника |
|
- |
- |
Віднімання дільника |
|
–Якщо знак залишкузбігається із знаком дільника, то наступна цифра частки–1, інакше–0.
–Якщоділенедодатне( 0 )ідільниквід’ємний( 0 ),точасткунеобхідно збільшитина 1.
–Якщоділеневід’ємнеідільникдодатний, тоуразі ненульового залишку відділення часткупотрібнозбільшитина1.
–Якщоділеневід’ємнеідільниквід’ємний, тоуразі нульовогозалишку
відділеннячасткунеобхіднозбільшитина1.
Залишок завжди приводиться дододатного числа, тобтоякщо після закінченняділеннявінвід’ємний,доньогопотрібнододатимодульдільника.
99