logo

Числа з плаваючою комою за стандартом IEEE 754

Стандарт IEEE для арифметики з плаваючою комою (IEEE 754) — це технічний стандарт для обчислення з плаваючою комою, який був створений у 1985 році Інститут інженерів з електротехніки та електроніки (IEEE) . Стандарт вирішував багато проблем, виявлених у різноманітних реалізаціях операцій з плаваючою комою, які ускладнювали їх надійне використання та зменшували їхню переносимість. Стандарт IEEE 754 із плаваючою точкою є найпоширенішим на сьогодні представленням дійсних чисел на комп’ютерах, включаючи ПК на базі Intel, комп’ютери Mac і більшість платформ Unix.

Є кілька способів представлення числа з плаваючою комою, але IEEE 754 є найефективнішим у більшості випадків. IEEE 754 має 3 основні компоненти:



  1. Знак Мантиси –
    Це так само просто, як і назва. 0 означає додатне число, а 1 — від’ємне число.
  2. Зміщений показник –
    Поле експоненти має представляти як додатні, так і від’ємні показники степеня. Зміщення додається до фактичного експоненти, щоб отримати збережений показник степеня.
  3. Нормалізована мантиса –
    Мантиса - це частина числа в науковому записі або число з плаваючою комою, що складається зі значущих цифр. Тут ми маємо лише 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

Діапазон додатних чисел з плаваючою комою можна розділити на нормалізовані числа та деноралізовані числа, які використовують лише частину точності дробів. Оскільки кожне число з плаваючою комою має відповідне об’єднане значення, наведені вище діапазони є симетричними навколо нуля.

Існує п’ять окремих числових діапазонів, які числа одинарної точності з плаваючою комою не можуть відобразити за допомогою представленої досі схеми:

  1. Від’ємні числа менше – (2 – 2-23) × 2127(негативне переповнення)
  2. Від’ємні числа більше – 2-149(негативне переповнення)
  3. Нуль
  4. Додатні числа менше 2-149(позитивне переповнення)
  5. Додатні числа, більші за (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 помилковий