Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОФК

.pdf
Скачиваний:
70
Добавлен:
12.02.2016
Размер:
965.02 Кб
Скачать

прикладах (табл. 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

Bдоп Bпр 0,0101
Aдоп Aпр 0,1001
B 5 16
A 9 16

З урахуванням особливостей подання чисел у різних форматах кодуваннядобуток загалом має вигляд

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

tсум

 

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]