Додавання та віднімання дійсних чисел

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

На початок виконання арифметичної діїоперанди операції поміщаються у відповідні регістри АЛУ.

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

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

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

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

Загалом оперціїдодавання, віднімання чисел представлених у форматі з плаваючою точкою виконуються в наступній послідовності:

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)дуже потрібно