Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Temi_dlya_samostiynogo_opratsyuvannya_251.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
666.93 Кб
Скачать

Тема 1.3 Виконання арифметичних операцій над числами з плаваючою комою (пк)

Лекція №5с. Правила додавання (віднімання) двійкових чисел з ПК

Додавання і віднімання чисел з плаваючою комою виконується у декілька етапів.

  1. Вирівнювання порядків;

Як відомо, реальна величина (вага) Ni одиниці і-го розряду мантиси визначається не тільки позицією даного розряду, але й порядком р числа, тобто

Ni = d p-і,

де і – номер позиції, рахуючи вправо від коми.

При додаванні (відніманні) необхідно, щоб ваги однойменних розрядів мантис чисел були однаковими. Для цього мантиси зсувають одна щодо одної так, щоб їх порядки вирівнялися. Щоб при вирівнюванні порядків не отримати мантиси більшої за одиницю, їх потрібно вирівнювати від меншого до більшого порядку. Мантиса з меншим порядком зсувається вправо (у бік молодших розрядів) на кількість розрядів, що дорівнює різниці порядків і одночасно коректується порядок (збільшується до значення спільного порядку).

  1. Додавання мантис;

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

  1. Переведення результату додавання мантис у прямий код.

У результаті додавання мантис може виникнути один з трьох випадків:

а) Виникає переповнення розрядної сітки комп’ютера (порушення нормалізації вправо). Ознакою переповнення є невизначеність знакових розрядів, коли результат неможливо віднести ні до додатних, ні до від’ємних чисел (код 01 або 10). У цьому випадку необхідно виконати корекцію результату додавання мантис шляхом його зсуву вправо на один розряд і одночасного збільшення порядку на 1.

Наприклад, після додавання мантис отримуємо число 01,00001. Нормалізуємо його зсувом вправо на один розряд і одночасно збільшуємо порядок на 1. В результаті отримуємо:

(А + В)д = 00,100001*2(к+1)

Переводимо у прямий код: (А + В)пр = 00,100001*2(к+1).

Внаслідок корекції результату шляхом зсуву вліво точність його погіршилася.

б) Результат від’ємний. Переведення результату додавання мантис у прямий код виконується шляхом виконання другого доповнення (тобто, виконується інверсія результату і до отриманого коду додається 1 у молодший розряд) або другого обертання (тобто, виконується інверсія результату);

в) Результат додатний. У прямому коді додатний результат залишається без змін;

  1. Нормалізація результату.

Виконується тоді, коли після переведення у прямий код у отриманому результаті відбувається порушення нормалізації вправо, тобто з правого боку від коми є один або декілька нулів. Це порушення коректується зсувом мантиси результату вліво і одночасне зменшення порядку на кількість розрядів зсуву мантиси до повної нормалізації мантиси.

  1. Остаточний результат додавання двох чисел з рухомою комою: сума мантис – це мантиса результату, порядок результату – вирівняний порядок доданків, із врахуванням всіх проведених корекцій.

Розглянемо приклади виконання операції додавання двійкових чисел з рухомою комою. Всі арифметичні дії будемо виконувати у модифікованому додатковому коді.

Приклад 1: Додати A = - 0,1101*2101 i B = + 0,1100*2011.

а) Вирівнюємо порядки. Спочатку, визначаємо арифметичну різницю між порядками, віднімаючи від значення порядку числа А значення порядку числа В. При цьому операцію віднімання замінюємо операцією додавання у додатковому модифікованому коді.

рА – рВ = рА + (– рВ) = (pA д(м) = 00,101) + (pB д(м) = 11,101) = 00,010 – різниця порядків

Аналіз отриманої різниці:

  • знак різниці показує, що порядок числа А більше порядку числа В;

  • порядки відрізняються на дві одиниці.

Через те, що рА > pB, зсуваємо мантису числа В вправо на два розряди, тобто

МВ пр= 00,001100 і Впр= 00,001100*2101.

Розряди мантиси числа В, які вийшли за межі розрядної сітки процесора, будуть втрачені, що погіршить точність обчислень.

б) Переводимо мантиси обох чисел у модифікований додатковий код (в межах 4-х розрядів):

МА пр = 11,1101 МА д(М) =.11,0011

МВ пр = 00,0011 МВ д(М) =.00,0011

в) Додаємо модифіковані додаткові коди мантис чисел А та В і отримуємо результат у модифікованому додатковому коді:

(А + В)д (М) = 11,0011 + 00,0011 = 11,0110

г) Аналіз результату додавання мантис починається із знакових розрядів. Знакові розряди показують, що переповнення розрядної сітки у нас не виникло. Результат – від'ємний, тому переводимо мантису результату у прямий код шляхом виконання другого доповнення і дописуємо спільний порядок:

(А + В)пр (М) = (11,1001 + 00,0001)*2101 = 11,1010*2101 - остаточний результат.

При переведенні у прямий код знак результату не міняється.

Подальший аналіз показує, що порушення нормалізації результату вправо немає.

Приклад 2: Додати двійкові числа: А = + 0,10100*2101 та В = - 0,10110*2100 .

а) Для вирівнювання порядків доданків необхідно із порядку числа А відняти порядок числа В. Віднімання замінимо додаванням у модифікованому додатковому коді.

(рА д(м)= 00,101) + (рВ д(м) = 11,100) = 00,101 – 00,100 = 00,101 + (- 00,100) = 00,101 + (11,011 + 00,001) = 00,101 + 11,100 = 00,001

Через те, що рА > pB на +1, виконуємо зсув мантиси числа В вправо на 1 розряд.

МВ пр = 11,010110 і В = 11,010110*2101.

б) Переведемо мантиси доданків у модифікований додатковий код.

МА пр = 00,10100 МА д(М) = 00,10100.

МВ пр = 11,010110 МВ д(М) = 11,101010.

в) Додаємо мантиси чисел А і В у модифікованих додаткових кодах:

(МА д(М) = 00,10100) + (МВ д(М) = 11,10101) = 00,01001

г) Переводимо результат у прямий код (виконуємо друге доповнення). У нашому випадку прямий код суми мантис збігається з додатковим кодом суми мантис, тому що результат є число додатне.

(МА + МВ) пр(м) = 00,01001

Як видно, виникло порушення нормалізації вправо, тому що вправо від коми розряд дорівнює 0.

д) Виконуємо нормалізацію результату, тобто зсув мантиси ліворуч на 1 розряд з одночасним відповідним зменшенням порядку:

(А + В)пр = 0,1001*2100 – остаточний результат.

Лекція №6с. Множення, ділення чисел з плаваючою комою

Множення чисел з плаваючою комою

Для чисел і , що представлені в формі з ПК, добуток обчислюється за формулою:

,

де , .

Звідси випливає, що процес множення складається з чотирьох етапів:

  • множення мантис;

  • додавання порядків;

  • нормалізація й округлення мантиси добутку;

  • корегування порядку добутку.

Перші два етапи можуть виконуватись одночасно, оскільки вони незалежні один від одного. При цьому множення мантис може бути здійснене будь-яким з розглянутих методів множення.

У загальному випадку результат множення мантис може бути одержаний в ненормалізованій формі. Причому порушення нормалізації можливо тільки зліва. Воно усувається шляхом зсуву коду мантиси на один розряд вліво і, відповідно, корегується порядок добутку шляхом віднімання одиниці від суми порядків. Округлення мантиси здійснюється додаванням одиниці до (п+1)-го розряду.

Під час виконання операції множення чисел з плаваючою комою можуть мати місце такі особливі випадки.

Якщо порядок результату є найбільшим від'ємним числом, то необхідно формувати машинний нуль.

Коли виникає переповнення додатного порядку і воно не усувається після нормалізації і корегування порядку, то необхідно формувати ознаку переповнення порядку.

Ці особливі випадки можна передбачити в алгоритмі операції множення введенням корегування добутку на підставі ознак результату.

Особливості ділення чисел з плаваючою комою

Для чисел і , що представлені в формі з плаваючою комою, частка визначається за формулою:

де , .

Звідси випливає, що процес ділення складається з чотирьох етапів:

  • ділення мантис;

  • віднімання порядків;

  • нормалізація мантиси частки;

  • корегування порядку частки.

Перші два етапи можуть виконуватись одночасно, оскільки вони незалежні один від одного. При цьому ділення мантис повністю співпадає з діленням чисел, що представлені в формі з фіксованою комою. Відміна полягає лише в тому, що мантиси операндів можуть співвідноситись одна з одною довільно. Оскільки мантиси діленого і дільника - нормалізовані числа, то можливі такі випадки: ; .

Коли мантиса діленого більше або дорівнює мантисі дільника, то на початку ділення одержується цифра частки, що дорівнює 1 і яка записується в цілу частину частки. Решта дій над мантисами аналогічні діям над числами, що представлені в формі з фіксованою комою. Одержана при цьому мантиса частки буде мати порушення нормалізації праворуч. Воно усувається шляхом зсуву коду мантиси на один розряд управо і, відповідно, корегується порядок частки шляхом додавання одиниці до різниці порядків.

Коли мантиса діленого менше мантиси дільника, то на початку ділення одержується цифра частки, що дорівнює 0 і яка записується в цілу частину частки. Далі ділення мантис продовжується за правилами ділення чисел, що представлені в формі з фіксованою комою. Одержана при цьому мантиса частки буде мати нормалізовану форму.

Під час виконання операції ділення чисел з плаваючою комою можуть мати місце такі особливі випадки.

Якщо дільник дорівнює нулю, то формується сигнал "Зупинка машини".

Оскільки в процесі ділення порядки віднімаються, то можливе переповнення розрядної сітки порядків. Коли виникає переповнення в бік від'ємних значень порядку і воно не усувається після нормалізації і корегування порядку, то мантисі результату приписується машинний нуль, а порядку - найбільше від'ємне число.

У разі переповнення додатного порядку необхідно формувати ознаку переповнення порядку.

Ці особливі випадки можна передбачити в алгоритмі операції ділення введенням аналізатора дільника на нуль і корегування частки на підставі ознак результату.

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