Число́ з рухо́мою ко́моюnumber // Англійсько-український словник з математики та інформатики 2010 р. (Є. Мейнарович, М. Кратко).number // Англійсько-українсько-англійський словник наукової мови (фізика та споріднені науки). Частина І англійсько-українська 2010 р. (О. Кочерга, Є. Мейнарович).число // Українсько-англійський словник з радіоелектроніки 2015 (Богдан Рицар, Леонід Сніцарук, Роман Мисак). — форма подання дійсних чисел, в якій число зберігається у формі мантиси і показника степеня.
Число з рухомою комою має фіксовану відносну точність, залежну від кількості розрядів мантиси, і змінювану абсолютну. Найчастіше використовувані подання затверджено в стандарті IEEE 754. Реалізація математичних операцій з числами з рухомою комою у комп'ютерах може бути як апаратною, так і програмною.
В обчислювальній техніці числа з рухомою комою (FP) — спосіб подання підмножини дійсних чисел за допомогою цілого числа з фіксованою точністю, яке називається мантисою, масштабованим за допомогою цілого показника фіксованої основи. Наприклад, 12,345 — це число з рухомою комою за основою десять із п’ятьма цифрами точності:
Однак, на відміну від 12.345, 12.3456 не є числом з рухомою комою за основою десять із п’ятьма цифрами точності — воно потребує шести цифр точності; найближче число з рухомою комою лише з п’яти цифр дорівнює 12,346. На практиці більшість систем з рухомою комою використовують основу два, хоча також поширена основа десять (десяткове число з рухомою комою).
Арифметичні операції з рухомою комою, такі як додавання та ділення, наближають відповідні арифметичні операції з дійсними числами шляхом округлення будь-якого результату, який сам по собі не є числом з рухомою комою, до найближчого числа з рухомою комою. Наприклад, в арифметиці з рухомою комою з точністю до п’яти десятих цифр суму 12,345 + 1,0001 = 13,3451 можна округлити до 13,345.
Термін «рухома кома» означає той факт, що кома основи числа може «плавати» будь-де ліворуч, праворуч або між значущими цифрами числа. Ця позиція позначається експонентою, тому кому з рухомою комою можна вважати формою наукового позначення.
Систему з рухомою комою можна використовувати для подання, з фіксованою кількістю цифр, чисел дуже різних порядків — наприклад, кількість метрів між галактиками або між протонами в атомі. З цієї причини арифметика з рухомою комою часто використовується для отримання дуже малих і дуже великих дійсних чисел, які потребують швидкого часу опрацювання. Результатом цього динамічного діапазону є те, що числа, які можна представити, розташовані нерівномірно; різниця між двома послідовними числами, які можна представити, змінюється залежно від їх експоненти.
Протягом багатьох років у комп’ютерах використовували різноманітні подання чисел з рухомою комою. У 1985 році було створено стандарт IEEE 754 для арифметики з рухомою комою, і з 1990-х років найчастіше зустрічаються представлення, визначені IEEE.
Швидкість операцій з рухомою комою, яка зазвичай вимірюється через FLOPS, є важливою характеристикою комп’ютерної системи, особливо для програм, які передбачають інтенсивні математичні обчислення.
Блок з рухомою комою (FPU, розмовно - математичний співпроцесор) — це частина комп’ютерної системи, спеціально розроблена для виконання операцій над числами з рухомою комою. Огляд
Числа з рухомою комою Представлення числа визначає певний спосіб кодування числа, зазвичай у вигляді рядка цифр.
Існує кілька механізмів, за допомогою яких рядки цифр можуть представляти числа. У стандартній математичній нотації рядок цифр може мати будь-яку довжину, а розташування коми основи вказується шляхом розміщення там явного символу «крапка» (крапка або кома). Якщо кому основи не вказано, то рядок неявно представляє ціле число, а невказана кома основи буде розташована з правого кінця рядка, поруч із молодшою цифрою. У системах із фіксованою комою позиція в рядку вказується для коми основи. Таким чином, у схемі з фіксованою комою може використовуватися рядок із 8 десяткових цифр із десятковою крапкою посередині, де "00012345" представлятиме 0001,2345.
У науковій нотації дане число масштабується за степенями 10, так що воно лежить у певному діапазоні — як правило, між 1 і 10, при цьому кома в основі з’являється відразу після першої цифри. Як степінь десяти, коефіцієнт масштабування вказується окремо в кінці числа. Наприклад, орбітальний період супутника Юпітера Іо становить 152 853,5047 секунд, значення, яке буде представлено в стандартній формі наукового запису як 1,528535047 × 105 секунд.
Представлення з рухомою комою подібне за концепцією до наукової нотації. Логічно число з рухомою комою складається з:
Цифровий рядок зі знаком (що означає додатним або від’ємним є число) заданої довжини в заданій основі (або основі). Цей рядок цифр називають мантисою. Довжина мантиси визначає точність, з якою можуть бути представлені числа. Вважається, що положення коми основи завжди знаходиться десь у межах цифр мантиси — часто відразу після або безпосередньо перед старшою цифрою або праворуч від крайньої правої (найменшої значущої) цифри. Показник цілого числа зі знаком (також відомий як характеристика або шкала), який змінює величину числа.
Щоб отримати значення числа з рухомою комою, мантиса множиться на основу, піднесену до степеня експоненти, що еквівалентно зсуву коми основи з її неявної позиції на кількість знаків, що дорівнює значенню експоненти, щоб отримати праворуч, якщо показник степеня додатний, або ліворуч, якщо показник степеня від’ємний.
Використовуючи основу 10 (відомий десятковий запис) як приклад, число 152 853,5047, що має десять десяткових цифр точності, представлено як мантиса 1 528 535 047 разом із показником 5. Щоб визначити фактичне значення, після першої цифри мантиси ставлять десяткову кому і результат множать на 105, тобто 1,528535047 × 105, або 152 853,5047. При збереженні такого числа не потрібно зберігати основу (10), оскільки вона буде однаковою для всього діапазону підтримуваних чисел і, таким чином, може бути виведена.
Символічно це записується так:
де s — мантиса (без урахування будь-якої неявної десяткової коми), p — точність (кількість цифр у мантисі), b — основа (у нашому прикладі це число десять), а e — експонента(порядок).
Історично склалося так, що кілька основ числення використовувалися для представлення чисел з рухомою комою, причому основа два (двійкова) є найпоширенішою, за нею йде основа десять (десяткова з рухомою комою) та інші менш поширені різновиди, такі як основа шістнадцять (шістнадцяткова з рухомою комою ), основа вісім (вісімкове число з рухомою комою ), основа чотири (четвертинне число з рухомою комою ), основа три (збалансована трійка з рухомою комою ) і парна основа 256 і основа 65 536.
Число з рухомою комою є раціональним числом, оскільки воно може бути представлене як одне ціле число, поділене на інше; наприклад1,45 × 103 це (145/100) × 1000 або 145 000 /100. Основа визначає дроби, які можна представити; наприклад, 1/5 не можна точно представити як число з рухомою комою за допомогою двійкової системи, але 1/5 можна точно представити за допомогою десяткової системи (0,2 або2 × 10−1). Однак 1/3 не може бути точно представлена ні двійковою (0,010101...), ні десятковою (0,333...), але в основі 3 це тривіально (0,1 або 1×3−1). Випадки, коли відбуваються нескінченні розширення, залежать від основи та її простих множників.
Спосіб, у який мантиса (включаючи її знак) і експоненту зберігаються в комп’ютері, залежить від реалізації. Загальні формати IEEE детально описані пізніше та в інших місцях, але як приклад у двійковому представленні з рухомою комою одинарної точності (32 біта), , отже, мантисою є рядок із 24 бітів. Наприклад, перші 33 біти числа π :
У цьому двійковому розширенні позначимо позиції від 0 (крайній лівий біт або старший біт) до 32 (крайній правий біт). 24-розрядна мантиса зупинятиметься на позиції 23, показаній як підкреслений біт0 вище. Наступний біт, у позиції 24, називається бітом округлення. Він використовується для округлення 33-бітного наближення до найближчого 24-бітного числа (існують спеціальні правила для половинних значень, але тут не так). Цей біт, який є 1 у цьому прикладі додається до цілого числа, утвореного крайніми лівими 24 бітами, що дає:
Коли це зберігається в пам’яті за допомогою кодування IEEE 754, це стає мантисою. Передбачається, що мантиса має двійкову кому праворуч від крайнього лівого біта. Отже, двійкове представлення π обчислюється зліва направо наступним чином:
де p – точність (24 у цьому прикладі), n - це позиція біта мантиси зліва (починаючи з0 і закінчуючи о23 тут), а e — показник степеня (1 у цьому прикладі).
Можна вимагати, щоб старша цифра мантиси ненульового числа була відмінною від нуля (за винятком випадків, коли відповідний показник степеня буде меншим за мінімальний). Цей процес називається нормалізацією. Для двійкових форматів (у яких використовуються лише цифри0 і1), ця ненульова цифра є обов’язковою1. Таким чином, його не потрібно представляти в пам’яті, дозволяючи формату мати ще один біт точності. Це правило по-різному називається угодою про провідні біти, неявною угодою про біти, угодою про приховані біти або угодою про передбачувані біти.
Альтернативи числам з рухомою комою Представлення з рухомою комою є найпоширенішим способом представлення в комп’ютерах наближення до дійсних чисел. Однак є альтернативи:
Представлення з фіксованою комою використовує цілочисельні апаратні операції, керовані програмною реалізацією певної угоди про розташування двійкової або десяткової коми, наприклад, 6 біт або цифр справа. Апаратне забезпечення для маніпулювання цими представленнями є менш дорогим, ніж з рухомою комою, і його також можна використовувати для виконання звичайних цілочисельних операцій. Двійкова фіксована кома зазвичай використовується в програмах спеціального призначення на вбудованих процесорах, які можуть виконувати лише цілочисельну арифметику, але фіксована кома в десятковому вигляді поширена в комерційних програмах. Логарифмічні системи числення (LNS) представляють дійсне число логарифмом його абсолютного значення та знакового біта. Розподіл значень подібний до числа з рухомою комою, але крива від значення до представлення (тобто графік функції логарифма) є плавною (за винятком 0). На відміну від арифметики з рухомою комою, у логарифмічній системі числення множення, ділення та піднесення до степеня є простими для реалізації, але додавання та віднімання є складними. (Симетрична) арифметика рівня індексу (LI та SLI) Чарльза Кленшоу, Френка Олвера та Пітера Тернера є схемою, заснованою на узагальненому логарифмічному представленні. Конічне представлення з рухомою комою, яке, здається, не використовується на практиці. Деякі прості раціональні числа (наприклад, 1/3 і 1/10) не можуть бути точно представлені у двійковій формі з рухомою комою, незалежно від точності. Використання іншої основи дозволяє відобразити деякі з них (наприклад, 1/10 у десятковій комі з рухомою комою), але можливості залишаються обмеженими. Програмні пакети, які виконують раціональну арифметику, представляють числа у вигляді дробів із цілим чисельником і знаменником, і тому можуть точно представляти будь-яке раціональне число. Такі пакети, як правило, повинні використовувати арифметику "bignum" для окремих цілих чисел. Інтервальна арифметика дозволяє представляти числа у вигляді інтервалів і отримувати гарантовані межі результатів. Зазвичай він базується на іншій арифметиці, зокрема з рухомою комою. Системи комп’ютерної алгебри, такі як Mathematica, Maxima та Maple, часто можуть обробляти ірраціональні числа, наприклад або цілком «формальним» способом (символьне обчислення), не маючи справу з конкретним кодуванням мантиси. Така програма може обчислювати такі вирази, як "" саме тому, оскільки він запрограмований на обробку основної математики безпосередньо, замість використання приблизних значень для кожного проміжного обчислення. Історія