Підсумовування чисел із плаваючою комою
Зараз ми зробимо доповнення до статті про однобайтні числа з плаваючою комою Число стандарту IEEE 754 одинарної точності має настільки багато біт, що простіше пояснити як працює підсумовування чисел з плаваючою комою на прикладі найменшого уявлення числа з плаваючою комою.
Додавання - це просто! Припустимо, що вам необхідно скласти два числа з плаваючою точкою X та Y.
Наприклад показник ступеня Y менше або дорівнює показнику ступеня X. Нехай показник Y дорівнюватиме у, а Х відповідно х
Алгоритм додавання виглядає так:
Додати різницю x-y до експонента числа Y. Зрушити мантису числа Y на x-y розрядів для компенсування змін в експоненті.
Складемо такі два числа:
Ще раз пройдемо всі кроки:
-
Уявити числа у нормованому вигляді. Таким чином, ми явно представляємо приховану одиницю.
У нормалізованому вигляді X дорівнює 1,110х2 2 і Y є 1.000х2 0
Для продовження процесу підсумовування нам необхідно, щоб експоненти двох чисел були рівними, ми робимо це переписуючи значення Y. Це денормалізує Y, але значення відповідає нормалізованому Y.
Додати різницю x-y до експонента числа Y. Зрушити мантису числа Y на x-y розрядів для компенсування змін в експоненті.
Різниця експонент 2. Отже, додамо 2 до показника Y і зрушимо точку прихованої одиниці вліво на 2. Таким чином отримаємо 0,0100х2 . Це еквівалентно старому значенню Y. Назвемо це скоригованим значенням Y'
Додавання двох мантис чисел X та скоригованого Y.
Додамо 1,110 до 0,01. Сума: 10,0. Експонента як і дорівнює показнику експоненти числа X, яка у свою чергу дорівнює двом.
Якщо сума на попередньому етапі зміщує одиницю нормалізації, необхідно зрушити експоненту, і повторити підсумовування.
У нашому випадку сума 10,0 має два біти ліворуч від точки. Щоб нормалізувати число нам потрібно, перемістити точку вліво на 1 розряд і збільшити експоненту на 1. Підсумковий результат: 1,000 х 2 3 .
Конвертування в однобайтну форму подання числа з плаваючою комою
Складемо такі два числа:
Ще раз пройдемо всі кроки:
-
Уявити числа у нормованому вигляді. Таким чином, ми явно представляємо приховану одиницю.
У нормалізованому вигляді X дорівнює 1,110х2 2 і Y є 1,000х2 -1
Для продовження процесу підсумовування нам необхідно, щоб експоненти двох чисел були рівними, ми робимо це переписуючи значення Y. Це денормалізує Y, але значення відповідає нормалізованому Y.
Додати різницю x-y до експонента числа Y. Зрушити мантису числа Y на x-y розрядів для компенсування змін в експоненті.
Різниця експонент 3. Отже, додамо 3 до показника Y і зрушимо точку прихованої одиниці вліво на 3. Таким чином отримаємо 0,0100х2 3 . Це еквівалентно старому значенню Y. Назвемо це скоригованимзначенням Y'
Додавання двох мантис чисел X та скоригованого Y.
Додамо 1,110 до 0,00111. Сума: 1,11111. Експонента як і дорівнює показнику експоненти числа X, яка у свою чергу дорівнює двом.
Якщо сума на попередньому етапі зміщує одиницю нормалізації, необхідно зрушити експоненту, і повторити підсумовування.
У нашому випадку сума 1,11111 має одну біту ліворуч від точки. Таким чином, число вже представлене в нормалізованому вигляді і нам не потрібно робити додаткових дій. Підсумковий результат: 1,111111х2 3 .
Конвертування в однобайтну форму подання числа з плаваючою комою
У нас є тільки 3 біти для подання мантиси, але у нас у відповіді 5 біт. Вочевидь, це схоже необхідність апаратного округлення числа з плаваючою комою.
Але для простоти, ми обріжемо додаткові два біти. Після усічення, ми отримуємо 1,111х2+2. Уявімо це у форматі з плаваючою точкою.