Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Додавання (віднімання) двійкових чисел з сталоюкомою
Додавання і віднімання чисел з рухомою комою виконується у декілька етапів. 1. Вирівнювання порядків; Як відомо, реальна величина (вага) Ni одиниці і -го розряду мантиси визначається не тільки позицією даного розряду, але й порядком р числа, тобто Ni = dp-I, де і – номер позиції, рахуючи вправо від коми. При додаванні (відніманні) необхідно, щоб ваги однойменних розрядів мантис чисел були однаковими. Для цього мантиси зсувають одна щодо одної так, щоб їх порядки вирівнялися. Щоб при вирівнюванні порядків не отримати мантиси більшої за одиницю, їх потрібно вирівнювати від меншого до більшого порядку. Мантиса з меншим порядком зсувається вправо (у бік молодших розрядів) на кількість розрядів, що дорівнює різниці порядків і одночасно коректується порядок (збільшується до значення спільного порядку). 2.
Додавання мантис з вирівненими порядками виконується згідно правил додавання чисел з фіксованою комою. При алгебраїчному додаванні для представлення від’ємних мантис використовується доповнювальний або обернений модифікований код. Сума мантис – це мантиса результату. Порядок результату – вирівняний порядок доданків, тобто порядок більшого числа. Отриманий від'ємний результат додавання необхідно перевести у прямий код.
3. Нормалізація результату. Виконується тоді, коли у отриманому результаті відбувається порушення нормалізації вправо або переповнення розрядної сітки. У результаті додавання мантис може виникнути один з трьох випадків: Випадок 1. Додавання не викликає переповнення розрядної сітки і порушення нормалізації вправо. Ознакою цього є відсутність нулів праворуч від коми і однойменність значень в обох розрядах знаку у отриманому результаті. Наприклад, результат дорівнює 00, 101101... Алгоритм виконання операції додавання має чотири етапи: а) Вирівнювання порядків; б) Переведення мантис у модифікований доповняльний (або обернений) код; в) Додавання модифікованих доповняльних (обернених) кодів і отримання результату із дописуванням до нього вирівненого порядку. г) Якщо знак суми мантис від’ємний, переведення результату у прямий код, тобто виконується друге доповнення (обернення) мантиси. Приклад 1: Додати A = - 0, 1101 * 10101 i B = + 0, 1100 * 10011.
При цьому операцію віднімання замінюємо операцією додавання у доповнювальних модифікованих кодах. рА – рВ = рА + (– рВ) = (pA доп(м) = 00, 101) + (pB доп(м) = 11, 101) = 00, 010 – різниця порядків Аналіз отриманої різниці: · знак різниці показує, що порядок числа А більше порядку числа В; · порядки відрізняються на дві одиниці. Через те, що рА > pB на дві одиниці, зсуваємо мантису числа В вправо на два розряди, тобто МВ пр= 00, 0011 і Впр= 00, 0011 * 10101. Розряди мантиси числа В, які вийшли за межі розрядної сітки процесора, будуть втрачені, що погіршить точність обчислень. б) Переводимо мантиси обох чисел у модифікований доповняльний код: МА доп(М) = 11, 0011; МВ доп(М) = 00, 0011 в) Додаємо модифіковані доповняльні коди мантис чисел А та В і отримуємо результат у модифікованому доповняльному коді: (А + В)доп (М) = 11, 0011 + 00, 0011 = 11, 0110 г) Аналіз результату додавання мантис починається із знакових розрядів. Знакові розряди показують, що переповнення розрядної сітки у нас не виникло. Результат – від'ємний, тому переводимо мантису результату у прямий код і дописуємо спільний порядок: (А + В)пр (М) = 11, 1010 * 10101 - остаточний результат. При переведенні у прямий код знак результату не міняється.
Випадок 2. Додавання двох нормалізованих чисел дає ненормалізований результат. Таке явище називають порушенням нормалізації вправо. Його ознака – поява у мантисі суми одного або більше, таких що йдуть підряд, нулів праворуч від коми (0, 01;...,; 0, 0001). Відповідно, для корекції такого результату, виконується нормалізація його мантиси вліво на таку кількість розрядів.
Приклад 2: Додати два числа: А = + 0, 10100 * 10101 та В = - 0, 10110 * 10100. а) Для вирівнювання порядків доданків необхідно із порядку числа А відняти порядок числа В. Віднімання замінимо додаванням у модифікованому доповняльному коді. (рА доп(М)= 00, 101) + (рВ доп(М) = 11, 100) = 00, 001 Хід виконання: 00, 101 – 00, 100 = 00, 101 + (- 00, 100) = 00, 101 + (11, 011 + 001) = 00, 101 + 1, 100 = 00, 001 Через те, що рА > pB на +1, виконуємо зсув мантиси числа В вправо на 1 розряд. МВ пр = -0, 01011. б) Переведемо мантиси доданків у модифікований доповняльний код. МА пр = +0, 10100 ® МА доп(М) = 00, 10100. МВ пр = -0, 01011 ® МВ доп(М) = 11, 10101. в) Додаємо мантиси чисел А і В у модифікованих доповняльних кодах: (МА доп(М) = 00, 10100) + (МВ доп(М) = 11, 10101) = 00, 01001 Як видно, виникло порушення нормалізіції вправо. г) Переводимо результат у прямий код (виконуємо друге доповнення). У нашому випадку прямий код суми мантис збігається з доповняльним кодом суми мантис, тому що результат є число додатне. МА пр + МВ пр = 00, 01001 д) Виконуємо нормалізацію результату, тобто зсув мантиси ліворуч з одночасним відповідним зменшенням порядку: (А + В)пр = 0, 1001 * 10100 – остаточний результат. Випадок 3. Додавання веде до переповнення розрядної сітки. Признаком цього слугує поява різних цифр у знакових розрядах (01 або 10). Таке явище називається порушенням нормалізації вліво.
Наприклад, після додавання мантис отримуємо число 01, 00001. Нормалізуємо його зсувом вправо на один розряд і одночасно збільшуємо порядок на 1. В результаті отримуємо: (А + В)доп = 00, 100001 * 10к+1 Переводимо у прямий код: (А + В)пр = + 0, 100001 * 10к+1. Внаслідок корекції результату шляхом зсуву вліво точність його погіршилася. |
Последнее изменение этой страницы: 2019-06-08; Просмотров: 400; Нарушение авторского права страницы