Число з плаваючою комою



План:


Введення

Число з плаваючою комою - форма представлення дійсних чисел, в якій число зберігається у формі мантиси і показника ступеня. При цьому число з плаваючою комою має фіксовану відносну точність і мінливу абсолютну. Найбільш часто використовуване уявлення затверджено в стандарті IEEE 754. Реалізація математичних операцій з числами з плаваючою комою в обчислювальних системах може бути як апаратна, так і програмна.


1. "Плаваюча кома" та "плаваюча крапка"

Так як в деяких, переважно англомовних та англофіцірованних, країнах (див. докладний список Decimal separator (Англ.) ) При записі чисел ціла частина відділяється від дробової точкою, то в термінології цих країн фігурує назва "плаваюча крапка" (floating point (Англ.) ). Так як в Росії ціла частина числа від дробової традиційно відокремлюється комою, то для позначення того ж поняття історично використовується термін "плаваюча кома", проте в даний час в російськомовній літературі і технічної документації можна зустріти обидва варіанти.


2. Походження назви

Назва "плаваюча кома" походить від того, що кома в позиційному поданні числа (десяткова кома, або, для комп'ютерів, двійкова кома - далі за текстом просто кома) може бути поміщена де завгодно щодо цифр в рядку. Це положення коми вказується окремо у внутрішньому поданні. Таким чином, подання числа у формі з плаваючою комою може розглядатися як комп'ютерна реалізація експоненційної запису чисел.

Перевага використання представлення чисел у форматі з плаваючою комою над виставою у форматі з фіксованою комою (і цілими числами) полягає в тому, що можна використовувати істотно більший діапазон значень при незмінній відносної точності. Наприклад, у формі з фіксованою комою число, що займає 8 розрядів в цілій частині і 2 розряду після коми, може бути представлено у вигляді 123456,78; 8765,43; 123,00 і так далі. У свою чергу, у форматі з плаваючою комою (у тих же 8 розрядах) можна записати числа 1,2345678; 1234567,8; 0,000012345678; 12345678000000000 і так далі, але для цього необхідно дворозрядне додаткове поле для запису показників ступеня 10 від 0 до 16 10, при цьому загальне число розрядів складе 8 +2 = 10.

Швидкість виконання комп'ютером операцій з числами, представленими у формі з плаваючою комою, вимірюється в мегафлопcах (від англ. FLOPS - число операцій з плаваючою комою в секунду ), гігафлопcах і так далі, і є однією з основних одиниць вимірювання швидкодії обчислювальних систем.


3. Структура числа

Число з плаваючою комою складається з:

  • Мантиси (що виражає значення числа без урахування порядку)
  • Знака мантиси (що вказує на негативні чи позитивні числа)
  • Порядку (виражає ступінь підстави числа, на яке множиться мантиса)
  • Знака порядку

3.1. Нормальна форма і нормалізована форма

Нормальною формою числа з плаваючою комою називається така форма, в якій мантиса (без урахування знака) знаходиться на полуінтервале [0; 1) ( 0 \ le a <1 ). Число з плаваючою комою, що знаходиться не в нормальній формі, втрачає точність у порівнянні з нормальною формою. Така форма запису має недолік: деякі числа записуються неоднозначно (наприклад, 0,0001 можна записати у 4 формах - 0,0001 10 0, 0,001 10 -1, 0,01 10 -2, 0,1 10 -3), тому поширена (особливо в інформатиці) також інша форма запису - нормалізована, в якій мантиса десяткового числа приймає значення від 1 (включно) до 10 (не включно), а мантиса двійкового числа приймає значення від 1 (включно) до 2 (не включно) ( 1 \ le a <q ). У такій формі будь-яке число (крім 0) записується єдиним чином. Недолік полягає в тому, що в такому вигляді неможливо уявити 0, тому представлення чисел в інформатиці передбачає спеціальний ознака ( біт) для числа 0.
Так як старший розряд (ціла частина числа) мантиси двійкового числа (крім 0) в нормалізованому вигляді дорівнює "1", то при записі мантиси числа в еом старший розряд можна не записувати, що і використовується в стандарті IEEE 754. В позиційних системах числення з підставою більшим, ніж 2 (в троичной, четверичной та ін), цієї властивості немає.


4. Використання в обчислювальних машинах

В обчислювальних машинах показник ступеня прийнято відокремлювати від мантиси буквою "E" (exponent). Наприклад, число 1,528535047 10 -25 в більшості мов програмування високого рівня записується як 1.528535047E-25.

5. Короткий огляд

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

  • Найбільш поширений шлях подання значення числа з рядка з цифрами - у вигляді цілого числа - кома (radix point) за замовчуванням знаходиться в кінці рядка.
  • Загалом математичному уявленні рядок з цифр може бути як завгодно довгою, а положення коми позначається шляхом явною запису символу комою (або, на Заході, точки) в потрібному місці.
  • У системах з поданням чисел у форматі з фіксованою комою існує певна умова щодо положення коми. Наприклад, у рядку з 8 цифр умова може наказувати положення коми в середині запису (між 4-й і 5-й цифрою). Таким чином, рядок "00012345" позначає число 1,2345 (нулі зліва завжди можна відкинути).
  • У експоненційної запису використовують стандартний (нормалізований) вид представлення чисел. Число вважається записаним в стандартному (нормалізованому) вигляді, якщо воно записане у вигляді aq ^ n , Де a , Зване мантиссой, таке, що 1 \ le a <q , n - Ціле, називається показник ступеня та q - Ціле, основа системи числення (на листі це зазвичай 10). Тобто у мантиси кома поміщається відразу після першої значущої (не дорівнює нулю) цифри, рахуючи зліва направо, а подальша запис дає інформацію про дійсному значенні числа. Наприклад, період обігу (на орбіті) супутника планети Юпітера Іо, який дорівнює 152853,5047 с, в стандартному вигляді можна записати як 1,528535047 10 5 с. Побічним ефектом обмеження на значення мантиси є те, що в такого запису неможливо зобразити число 0.
  • Запис у формі з плаваючою комою схожа на запис чисел у стандартному вигляді, але мантиса і експонента записуються роздільно. Мантиса записується в нормалізованому форматі - з фіксованою комою, подразумеваемой після першої значущої цифри. Повертаючись до прикладу з Іо, запис у формі з плаваючою комою буде 1528535047 з показником 5. Це означає, що записане число в 10 5 разів більше числа 1,528535047, тобто для отримання подразумеваемого числа кома зсувається на 5 розрядів вправо. Однак, запис у формі з плаваючою комою використовується в основному в електронному поданні чисел, при якому використовується основа системи числення 2, а не 10. Крім того, в двійковій запису мантиса зазвичай денормалізована, тобто кома мається на увазі до першої цифри, а не після, і цілої частини взагалі не мається на увазі - так з'являється можливість і значення 0 зберегти природним чином. Таким чином, десяткова 9 в двійковому поданні з плаваючою комою буде записана як мантиса +1001000 ... 0 і показник +0 ... 0100. Звідси, наприклад, біди з двійковим поданням чисел типу однієї десятої (0,1), для якої двійкове подання мантиси виявляється періодичної двійковій дробом - за аналогією з 1/3, яку не можна кінцевим кількістю цифр записати в десятковій системі числення.

Запис числа у формі з плаваючою комою дозволяє робити обчислення над широким діапазоном величин, поєднуючи фіксована кількість розрядів і точність. Наприклад, у десятковій системі надання чисел з плаваючою комою (3 розряду) операцію множення, яку ми б записали як

0,12 0,12 = 0,0144

в нормальній формі представляється у вигляді

(1,20 10 -1) (1,20 10 -1) = (1,44 10 -2).

У форматі з фіксованою комою ми б отримали вимушене округлення

0,120 0,120 = 0,014.

Ми втратили крайній правий розряд числа, так як даний формат не дозволяє коми "плавати" по запису числа.


5.1. Діапазон чисел, представимих у форматі з плаваючою комою

Діапазон чисел, які можна записати даними способом, залежить від кількості біт, відведених для представлення мантиси і показника. На звичайній 32-бітної обчислювальній машині, що використовує подвійну точність (64 біта), мантиса становить 1 біт знак + 52 біта, показник - 1 біт знак + 10 біт. Таким чином отримуємо діапазон точності приблизно від 4,94 10 -324 до 1.79 10 308 (від 2 -52 2 -1022 до ~ 1 2 1024). Пара значень показника зарезервована для забезпечення можливості подання спеціальних чисел. До них відносяться значення NaN (Not a Number, не число) і + /-INF (Infinity, нескінченність), які утворюються в результаті операцій типу поділу на нуль нуля, позитивних і негативних чисел. Також сюди потрапляють денормалізованние числа, у яких мантиса менше одиниці. У спеціалізованих пристроях (наприклад GPU) підтримка спеціальних чисел часто відсутня. Існують програмні пакети, в яких обсяг пам'яті виділений під мантиссу і показник задається програмно, і обмежується лише обсягом доступної пам'яті ЕОМ.


Точність Одинарна Подвійна Розширена
Розмір (байти) 4 8 10
Число десяткових знаків 7 15 19
Найменше значення (> 0), denorm 1,4 10 -45 5,0 10 -324 1,9 10 -4 951
Найменше значення (> 0), normal 1,2 10 -38 2,3 10 -308 3,4 10 -4 932
Найбільше значення 3,4 10 +38 1,7 10 +308 1,1 10 +4932
Поля SEF SEF SEIF
Розміри полів 1-8-23 1-11-52 1-15-1-63
  • S - знак, E - показник ступеня, I - ціла частина, F - дробова частина
  • Так само, як і для цілих, знаковий біт - старший.

5.2. Машинна епсилон

На відміну від чисел з фіксованою комою, сітка чисел, які здатна відобразити арифметика з плаваючою комою, нерівномірна: вона густіша для чисел з малими порядками і більш рідкісна - для чисел з великими порядками. Але відносна похибка запису чисел однакова і для малих чисел, і для великих. Тому можна ввести поняття машинної епсилон.

Машинної епсилон називається найменше позитивне число ε таке, що 1 \ oplus \ varepsilon \ neq 1 (Знаком \ Oplus позначено машинне складання). Грубо кажучи, числа a і b, співвідносні так, що 1 <\ frac a b <1 + \ varepsilon , Машина не розрізняє.


Література

  • Н. А. Криницький, Г. А. Миронов, Г. Д. Фролов. Програмування. - Державне видавництво фізико-математичної літератури. - Москва, 1963
  • Генрі С. Уоррен, мл. Глава 15. Числа з плаваючою точкою / / Алгоритмічні трюки для програмістів = Hacker's Delight. - М .: Вільямс, 2007. - С. 288. - ISBN 0-201-91465-4
  • Меркухін Е.Н. Формати чисел у ЕОМ
Перегляд цього шаблону Типи даних
Неінтерпретіруемие

Біт Ніббл Байт Тріт Трайт Слово

Числові

Цілий З фіксованою комою З плаваючою комою Раціональний Комплексний Довгий Інтервальний

Текстові

Символьний Строковий

Покажчик

Адреса Посилання

Композитні

Алгебраїчний тип даних ( узагальнений) Масив Асоціативний масив Клас Список Кортеж Об'єкт Option type Product Структура Безліч Об'єднання (tagged)

Інші

Логічний Нижчий тип Колекція Перераховуються тип Виняток First-class function Opaque data type Recursive data type Семафор Потік Вищий тип Type class Unit type Void

Пов'язані теми

Абстрактний тип даних Структура даних Інтерфейс Kind (type theory) Примітивний тип Subtyping Шаблони C + + Конструктор типу Parametric polymorphism


http://znaimo.com.ua