Особливості додавання чисел, представлених у формі з плаваючою комою. При виконанні операції алгебраїчного додавання над мантисами і порядками виконуються різні дії. Додавання чисел у нормальній формі здійснюється шляхом додавання мантис. Додавати мантиси можна тільки для чисел, що мають однакові порядки!!!
Для того, щоб додати або відняти два числа з різними порядками, потрібно провести:вирівнювання їхніх порядків, причому, природньо, порушується нормалізація одного з чисел. При вирівнюванні порядків доданок з меншим порядком повинен бути приведеним до порядку іншого доданка. Принципово, приведення можна здійснювати до будь-якого порядку, тобто як до меншого порядку, так і до більшого. У ЦА приводять до більшого порядку
Мантису першого доданка треба при цьому помножити на величину (Pa-Pb), яка дорівнює 2 Pa-Pb або, що те ж саме, зсувати в регістрі праворуч на (Pa-Pb) розрядів. Молодші розряди мантиси при зсуві можуть зникати, в результаті чого в доданок вноситься похибка. Якщо порядок числа збільшується на n розрядів, то у мантисі числа потрібно зсунути кому на n розрядів ліворуч. Відповідно, якщо порядок числа зменшується на n розрядів, то у мантисі числа потрібно зсунути кому на n розрядів праворуч.
Алгебраїчне додавання двох чисел в ЦОМ з плаваючою комою виконується утакий спосіб:1) На спеціальному суматорi порядків з порядку першого числа віднімається порядок другого числа. Знак різниці порядків вказує, яку з мантис потрібно зсувати праворуч (кому у мантисі - ліворуч) при вирівнюванні порядків, і порядок кожного з двох доданків повинен бути прийнятим за спiльний порядок після закінчення вирівнювання порядків.2) Якщо різниця порядків додатня, то виконується ряд циклів зсуву мантиси другого доданка на один розряд праворуч з одночасним відніманням одиниці з різниці порядків доти, доки на суматорi порядків не буде зафіксований нуль. Далі нормалізована мантиса першого доданка додається з ненормалізованою мантисою другого доданка, і сумі приписується порядок першого доданку.
3) Якщо різниця порядків вiд’ємна, то в кожному циклі виконується зсув мантиси першого доданка на один розряд праворуч і до вiд’ємної різниці порядків додається одиниця. Після того, як на суматорi порядків буде зафіксований нуль, виконується додавання мантис, і сумі приписується порядок другого доданка.4) У результаті додавання двох чисел може відбутися порушення нормалізації як ліворуч, так і праворуч.
Додавання двох чисел у ЦОМ з плаваючою комою: А=0,10110101*2-1110 В=0,11110011*20001 Модифікований код першого доданку має вигляд: знак порядку 11 порядок 1110 знак мантиси 00 мантиса 10110101 Модифікований код другого доданку має вигляд: знак порядку 00 порядок 0001 знак мантиси 00мантиса 11110011
1) З порядку першого доданку віднімаємо порядок другого, тобто додаємо його додатковий код: 11 1110 – порядок 1-го доданка + 11 1111 – порядок 2-го доданка зі зміненим знаком 11 1101 – різниця порядків Вiд’ємний знак різниці порядків говорить про те, що порядок першого доданка менше, ніж порядок другого, тобто після вирівнювання порядків обидва доданки повинні мати однаковий порядок, який дорівнював би порядкові другого доданка.
2) Повторюємо цикл додавання одиниці до різниці порядків і зсуву мантиси першого доданку праворуч доти, доки різниця порядків не прийме значення "нуль". Різниця порядків і мантиса першого доданка послідовно приймають наступні значення: N циклу різниця порядків мантиса 1-го доданка 1 11 1110 01011010 1 +1 2 11 1111 00101101 0 +1 3 00 0000 00010110 1 Після 3-го циклу вирівнювання порядків закінчується. Два молодших розряди мантиси першого доданка зникають, один розряд зберігається для округлення.
4) Приписуємо сумі порядок другого доданка та одержуємо код: знак порядок 2-го дод. знак матиса суми 00 0001 01 000010011 Комбінація “01” у двознакових розрядах мантиси суми вказує на порушення нормалізації ліворуч. Для відновлення нормалізації додаємо одиницю до порядку суми, а код мантиси суми зсуваємо на один розряд праворуч. В результаті одержуємо код суми: 00 0010 00 10000100 1
5) Виконуємо округлення шляхом додавання одиниці в додатковий розряд. Остаточний код суми має такий вигляд: 00 0010 00 10000101. При вирівнюванні порядків доданків у ЦОМ з плаваючою комою ми вимушено використовували операцію зсуву праворуч. Поряд з цим використовується операція зсуву ліворуч. Зсув додатнього числа лiворуч на k розрядів еквівалентний множенню його на 2 k . Ця операція має сенс тільки доти, доки старші значущі розряди не почнуть виходити за розміри регістру, тобто поки в розряд знаку не потрапить одиниця.
3. Порівнюємо порядки: РВ – РА = 5 – 3 = 2.4. Різниця порядків не дорівнює нулю, тому виконуємо вирівнювання порядку числа A і відповідну корекцію мантиси числа A (порядок числа А менше порядку числа В на 2, тому робимо зсув мантиси числа А на два розряди вправо і збільшуємо порядок числа А на 2):[А]пк = 0 101 0 0011001[В]пк= 0 101 0 101001
5. Вирівнюємо кількість двійкових розрядів у мантисах чисел А і В (розрядна сітка мантиси числа В на одиницю менша, тому в мантису числа Bдописуємо один нуль справа):[А]пк = 0 101 0 0011001[В]пк= 0 101 0 10100106. Виконуємо операцію додавання мантис у додатковому модифікованому коді (знаки мантис відображаємо двома двійковими розрядами):[МА]дк = 00 0011001+[МВ]дк = 00 1010010[МС]дк = 00 1101011 Мантиса результату додавання не потребує нормалізації, тому що розряди знака мають однакові значення і значення старшого розряду мантиси не дорівнює значенню молодшого розряду знака.
7. Записуємо результат у форматі з плаваючою комою: 0 101 0 1101011.8. Переводимо результат у двійковий і десятковий коди: С2 = 11010,11 С10 = 16+8+2+0,5+0,25 = 26,75. Слід мати на увазі, що часто через невелику кількість двійкових розрядів, виділених для зберігання мантиси, виникає похибка відтворення дробової частини вихідного числа в двійковій системі числення. Значення абсолютної похибки D відтворення числа X обчислюється за формулою: D = Xвихідне – Xотримане ,де Xвихідне – вихідне число; Xотримане – отримане число. Значення відносної похибки d відтворення числа X обчислюється за формулою:d = (D / Xвихідне)·100 % .