Remove ads
З Вікіпедії, вільної енциклопедії
Стандарт IEEE для чисел з рухомою комою (IEEE 754) — технічний стандарт формату представлення чисел з рухомою комою, створений у 1985 році Інститутом інженерів з електротехніки та електроніки (IEEE). Стандарт вирішував багато проблем, виявлених у різноманітних реалізаціях з рухомою комою, що ускладнювало їхнє надійне та портативне використання. Багато апаратних пристроїв із рухомою комою використовують стандарт IEEE 754. Використовується як у програмних реалізаціях арифметичних дій, так і в багатьох апаратних (CPU та FPU) реалізаціях. Багато компіляторів мов програмування використовують цей стандарт для зберігання чисел та виконання математичних операцій.
Стандарт визначає формати і методи для арифметики з рухомою комою в комп'ютерних системах — стандартні та розширені функції для чисел одинарної, подвійної, розширеної і розширюваної точності — і рекомендує формати для обміну даними[1]. Визначає виняткові ситуації та їхню стандартну обробку.
Цей стандарт визначає:
IEEE 754-2008, опублікований у серпні 2008 року, містить майже весь оригінальний стандарт IEEE 754-1985, а також стандарт IEEE 854-1987 для арифметики з рухомою крапкою, незалежну від кореня. Поточна версія, IEEE 754-2019, була опублікована в липні 2019 року.[2] Це незначна редакція попередньої версії, яка включає в основному уточнення, виправлення дефектів і нові рекомендовані операції.
Стандарт IEEE 754 був розроблений робочою групою Floating-Point Working Group комітету стандартів Інституту інженерів з електротехніки та електроніки IEEE у 1985 році. Провідну роль у розробці стандарту відіграв професор Каліфорнійського університету в Берклі Вільям Кехен, якого часто називають «батьком рухомої коми»[3].
Після 2000 року робоча група зайнялася удосконаленням існуючого стандарту IEEE Std 754—1985 з метою усунення недоліків, об'єднання його зі стандартом IEEE Std 854—1987 та доповнення новими можливостями[4]. Ця робота завершилася у 2008 році прийняттям нового стандарту IEEE Std 754—2008[1]. Пізніше цей стандарт був затверджений Міжнародною організацією зі стандартизації як ISO/IEC/IEEE 60559:2011[5].
Основний формат (basic format) — одне із п'яти представлень чисел з рухомою комою (три двійкових і два десяткових), визначених цим стандартом і призначених для арифметики.
Формат обміну (interchange format) — формат, що має визначене кодування фіксованої ширини, визначене цим стандартом.
Формат розширеної точності (extended precision format) — формат, який розширює основний формат, надаючи більшу точність і діапазон представлення чисел.
Формат розширюваної точності (extendable precision format) — формат з точністю і діапазоном, які визначаються користувачем.
Не число (not a number, NaN) — код, який не є чинним представленням жодного з чисел з рухомою комою. Буває двох типів «тихе не число» та «сигнальне не число».
Тихе не число (quiet NaN, qNaN) — є результатом операції, який не є числом з рухомою комою, хоча й не призводить до генерації виключень (наприклад, операції 0/0 або корінь з від'ємного числа дають NaN).
Сигнальне не число (signaling NaN, sNaN) — сигналізує про неприпустиме значення числа з рухомою комою шляхом генерації виключення. Зазвичай сигналізує про неініціалізовані змінні.
Зміщений порядок (biased exponent) — сума порядку і зміщення (константи), обраного так, щоб усі порядки були невід'ємними.
Хвіст мантиси (trailing significand) — дробова частина нормалізованої мантиси (для двійкового представлення — усі біти мантиси, крім найстаршого).
Стандарт визначає формати чисел з рухомою комою, які використовуються для представлення скінченної підмножини дійсних чисел. Формати характеризуються основою системи числення (radix або base), точністю (precision) і діапазоном значень порядку (range). Визначені конкретні кодування для двійкових і десяткових форматів.
Оновлений стандарт IEEE Std 754—2008 визначає два види форматів:
Формати обміну включають п'ять основних форматів фіксованого розміру:
Формати binary32 і binary64 відповідають форматам одинарної та подвійної точності стандарту IEEE 754—1985.
Представлення даних з рухомою комою включає:
Кодування переводить дані з рухомою комою в бітову послідовність. Бітові послідовності NaN можуть містити ретроспективну діагностичну інформацію.
Числа з рухомою комою представляються в заданому форматі за допомогою наступних параметрів:
Для всіх форматів справедливо emin = 1 − emax.
Дані з рухомою комою у форматах обміну представляються k бітами за допомогою трьох полів:
MSB | LSB |
знак S | порядок E | хвіст мантиси T |
1 біт | w бітів | t = p — 1 бітів |
Для представлення у цьому форматі двійкове число спочатку нормалізується, тобто приводиться до такого вигляду, коли мантиса потрапляє в діапазон 1 ≤ m < 2. Таким чином ціла частина нормалізованої мантиси завжди дорівнює 1.
Знак додатних чисел кодується нулем, від'ємних одиницею. В поле порядку пишеться зміщений порядок — до порядку нормалізованого числа додається константа, таким чином всі порядки представляються додатними числами. В поле мантиси записується, т. зв. «хвіст» мантиси — всі дробові цифри мантиси (крім першої одиниці, яка є цілою частиною). Ціла частина мантиси в нормалізованому вигляді дорівнює 1 і не входить до коду числа. Це так звана прихована одиниця.
Приклад. 0,312510 = 0,01012 = 1,01 × 2−2. Для формату binary32 порядок зміщується на 127. E = –2 + 127 = 125 = 11111012. Мантиса записується без першої одиниці, тобто T = 01 (1,01 –1 = 0,01). Компоненти коду: знак — 0 (1 розряд), зміщений порядок — 01111101 (8 розрядів), хвіст мантиси 01000000000000000000000 (23 розряди).
Повний 32-бітний код 00111110101000000000000000000000. Кольором виділено поле порядку.
Формат | Назва | Основа | Цифр мантиси | Десяткових цифр | Бітів порядку | Десяткове E max | Зміщення порядку | E min | E max | Примітки |
---|---|---|---|---|---|---|---|---|---|---|
binary16 | Half precision | 2 | 11 | 3.31 | 5 | 4.51 | 24−1 = 15 | −14 | +15 | не основний |
binary32 | Single precision | 2 | 24 | 7.22 | 8 | 38.23 | 27−1 = 127 | −126 | +127 | |
binary64 | Double precision | 2 | 53 | 15.95 | 11 | 307.95 | 210−1 = 1023 | −1022 | +1023 | |
binary128 | Quadruple precision | 2 | 113 | 34.02 | 15 | 4931.77 | 214−1 = 16383 | −16382 | +16383 | |
decimal32 | 10 | 7 | 7 | 7.58 | 96 | 101 | −95 | +96 | не основний | |
decimal64 | 10 | 16 | 16 | 9.58 | 384 | 398 | −383 | +384 | ||
decimal128 | 10 | 34 | 34 | 13.58 | 6144 | 6176 | −6143 | +6144 | ||
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.