Стандарт IEEE для арифметики з плаваючою комою (IEEE 754) — це технічний стандарт для обчислення з плаваючою комою, який був створений у 1985 році Інститут інженерів з електротехніки та електроніки (IEEE) . Стандарт вирішував багато проблем, виявлених у різноманітних реалізаціях операцій з плаваючою комою, які ускладнювали їх надійне використання та зменшували їхню переносимість. Стандарт IEEE 754 із плаваючою точкою є найпоширенішим на сьогодні представленням дійсних чисел на комп’ютерах, включаючи ПК на базі Intel, комп’ютери Mac і більшість платформ Unix.
Є кілька способів представлення числа з плаваючою комою, але IEEE 754 є найефективнішим у більшості випадків. IEEE 754 має 3 основні компоненти:
- Знак Мантиси –
Це так само просто, як і назва. 0 означає додатне число, а 1 — від’ємне число. - Зміщений показник –
Поле експоненти має представляти як додатні, так і від’ємні показники степеня. Зміщення додається до фактичного експоненти, щоб отримати збережений показник степеня. - Нормалізована мантиса –
Мантиса - це частина числа в науковому записі або число з плаваючою комою, що складається зі значущих цифр. Тут ми маємо лише 2 цифри, тобто O та 1. Таким чином, нормалізована мантиса є такою, що має лише одну 1 ліворуч від десяткової коми.
Числа IEEE 754 поділяються на дві групи на основі трьох компонентів: одинарної точності та подвійної точності.
| ТИПИ | ЗНАК | ЗМІЩЕНИЙ ПОКАЗНИК | НОРМАЛІЗОВАНА МАНТИСА | УПЕРЕДЖЕННЯ |
|---|---|---|---|---|
| Одинарна точність | 1 (31-й біт) | 8 (30-23) | 23(22-0) | 127 |
| Подвійна точність | 1 (63-й біт) | 11 (62-52) | 52(51-0) | 1023 |
приклад –
85.125 85 = 1010101 0.125 = 001 85.125 = 1010101.001 =1.010101001 x 2^6 sign = 0 1. Single precision: biased exponent 127+6=133 133 = 10000101 Normalised mantisa = 010101001 we will add 0's to complete the 23 bits The IEEE 754 Single precision is: = 0 10000101 01010100100000000000000 This can be written in hexadecimal form 42AA4000 2. Double precision: biased exponent 1023+6=1029 1029 = 10000000101 Normalised mantisa = 010101001 we will add 0's to complete the 52 bits The IEEE 754 Double precision is: = 0 10000000101 0101010010000000000000000000000000000000000000000000 This can be written in hexadecimal form 4055480000000000>
Особливі цінності: IEEE зарезервував деякі значення, які можуть бути неоднозначними.
- Нуль –
Нуль — це спеціальне значення, яке позначається експонентою та мантисою 0. -0 і +0 — різні значення, хоча вони обидва рівні.
- Денормалізований –
Якщо експонента складається з нулів, але мантиса ні, тоді значення є денормалізованим числом. Це означає, що це число не має передбачуваного провідного числа перед двійковою крапкою. - Нескінченність –
Значення +infinity і -infinity позначаються експонентом усіх одиниць і мантисою всіх нулів. Знаковий біт розрізняє негативну нескінченність і позитивну нескінченність. Операції з нескінченними значеннями добре визначені в IEEE. - Не номер (NAN) –
Значення NAN використовується для представлення значення, яке є помилкою. Це представлено, коли всі поля експоненти складаються з одиниць із нульовим бітом знака або мантиси, що не 1, за якою слідують нулі. Це спеціальне значення, яке можна використовувати для позначення змінної, яка ще не містить значення.
| ПОКАЗНИК | МАНТИЗА | ЦІННІСТЬ |
|---|---|---|
| 0 | 0 | точний 0 |
| 255 | 0 | Нескінченність |
| 0 | не 0 | денормований |
| 255 | не 0 | Не номер (NAN) |
Подібно для подвійної точності (просто заміна 255 на 2049), діапазони чисел з плаваючою комою:
| Денормалізований | Унормований | Приблизний десятковий | |
|---|---|---|---|
| Одинарна точність | ±2-149до (1-2-23)×2-126 | ±2-126до (2 – 2-23)×2127 | ± приблизно 10-44,85приблизно до 1038,53 |
| Подвійна точність | ±2-1074до (1-2-52)×2-1022 | ±2-1022до (2 – 2-52)×21023 | ± приблизно 10-323,3приблизно до 10308.3 |
Діапазон додатних чисел з плаваючою комою можна розділити на нормалізовані числа та деноралізовані числа, які використовують лише частину точності дробів. Оскільки кожне число з плаваючою комою має відповідне об’єднане значення, наведені вище діапазони є симетричними навколо нуля.
Існує п’ять окремих числових діапазонів, які числа одинарної точності з плаваючою комою не можуть відобразити за допомогою представленої досі схеми:
- Від’ємні числа менше – (2 – 2-23) × 2127(негативне переповнення)
- Від’ємні числа більше – 2-149(негативне переповнення)
- Нуль
- Додатні числа менше 2-149(позитивне переповнення)
- Додатні числа, більші за (2 – 2-23) × 2127(позитивне переповнення)
Переповнення зазвичай означає, що значення виросли занадто великими для представлення. Недостатнє переповнення є менш серйозною проблемою, оскільки означає лише втрату точності, яка гарантовано наближена до нуля.
Нижче наведено таблицю загального ефективного діапазону кінцевих чисел з плаваючою комою IEEE:
| Двійковий | Десятковий | |
|---|---|---|
| неодружений | ± (2 – 2-23) × 2127 | приблизно ± 1038,53 |
| Двомісний | ± (2 – 2-52) × 21023 | приблизно ± 10308,25 |
Спеціальні операції –
| Операція | Результат |
|---|---|
| n ÷ ±нескінченність | 0 |
| ±нескінченність × ±нескінченність | ±Нескінченність |
| ±ненульовий ÷ ±0 | ±Нескінченність |
| ±кінцевий × ±Нескінченність | ±Нескінченність |
| Нескінченність + Нескінченність Безконечность – -Безмежність | +Нескінченність |
| -Нескінченність – нескінченність -Нескінченність + – Нескінченність | – Нескінченність |
| ±0 ÷ ±0 | NaN |
| ±Нескінченність ÷ ±Нескінченність | NaN |
| ±Нескінченність × 0 | NaN |
| NaN == NaN | помилковий |