Додавання та віднімання дійсних чисел
Виконання арифметичних операцій над речовими числами відрізняється від аналогічних операцій над цілими числами.
На початок виконання арифметичної діїоперанди операції поміщаються у відповідні регістри АЛУ.
При складанні та відніманні спочатку проводиться підготовча операція, званавирівнюванням порядків.
У процесі вирівнювання порядків мантиса числа з меншим порядком зсувається у своєму регістрі праворуч на кількість розрядів, що дорівнює різниці порядків операндів. Після кожного зсуву порядок зростає на одиницю.
В результаті вирівнювання порядків однойменні розряди чисел виявляються розташованими у відповідних розрядах обох регістрів, після чого мантиси складаються або віднімаються.
У разі потреби отриманий результат нормалізується шляхом зсуву мантиси результату вліво. Після кожного зсуву вліво порядок результату зменшується на одиницю.
Загалом оперціїдодавання, віднімання чисел представлених у форматі з плаваючою точкою виконуються в наступній послідовності:
1) Здійснюється порівняння порядків (при цьому оскільки у форматах зберігаються не самі порядки, а зміщені порядки, як цілі беззнакові числа, їх порівняння здійснюється шляхом віднімання їх як цілих беззнакових чисел).
2) Проводиться виранювання порядків числа з меншим порядком у бік числа з більшим порядком.
3) Проводиться алгебраїчне додавання.
4) Проводиться нормалізація результатів.
Приклад 3. Скласти двійкові нормалізовані числа 0.10111•2 –1 та 0.11011*2 10 . Різниця порядків доданків тут дорівнює
Приклад 4. Виконати віднімання двійкових нормалізованихчисел 0.10101*2 10 та 0.11101*2 1 . Різниця порядків зменшуваного і віднімається тут дорівнює одиниці, тому перед відніманням мантиса другого числа зрушується на один розряд праворуч:
При додаванні, відніманні мантис може виникнути порушення нормалізації (денормалізація) вліво на 1 розряд. Для отримання нормалізованого результату необхідно мантису зрушити на 1 розряд праворуч, а порядок збільшити на 1.
Може виникнути переповнення порядків. При складанні мантис близьких по модулю один до одного, але мають різні знаки може виникнути денормалізація вправо на будь-яке число розрядів аж до нулів. Якщо вийшли всі нулі, то результату надається машинний нуль (втрата значущості).
Якщо мантиса не нульова і має місце денормалізація вправо, то для отримання нормалізованого результату мантиса зрушується вліво на відповідне число розрядів (поки що старша розрядна цифра залишається рівною нулю), а порядок порядок зменшується на цю величину. В цьому випадку може виникнути антипереповнення.
Чи не знайшли те, що шукали? Скористайтеся пошуком:
Вимкніть adBlock! і оновіть сторінку (F5)дуже потрібно