Крапка або кома
Докладного списку Decimal separator вказані ті англомовні і англофицированние країни, де в записах чисел дробова частина відокремлюється від цілої частини точкою, і тому термінологією цих країн прийнято назву floating point - "плаваюча крапка". У Російській Федерації дробову частину від цілої за традицією відокремлюється комою, тому означає це ж поняття історично визнаний термін "числа з плаваючою комою". Тим не менш, сьогодні в технічній документації і в російськомовній літературі цілком допускаються обидва ці варіанти. Термін "числа з плаваючою комою" походить від того, що позиційне подання числа представляє кому (звичайну десяткову або двійкову - комп'ютерну), яка може поміститися де завгодно серед цифр рядка. Таку її особливість обов'язково обумовлюють окремо. Це означає, що представлення чисел з плаваючою комою можна розглядати як комп'ютерну реалізацію експоненційної запису числа. Перевагою використання такого подання над виставою формату з фіксованою комою і цілими числами в тому, що діапазон значень приростає істотно при тому, що відносна точність залишається незмінною.Приклад
Якщо кома в числі фіксована, то записати його можна тільки одним форматом. Наприклад, дано шість розрядів цілого в числі і два розряди дробової частини. Це можна зробити тільки таким чином: 12345678. Формат чисел з плаваючою комою дає повний простір для вираження. Наприклад, дані ті ж самі вісім розрядів. Варіантів запису може бути скільки завгодно, якщо програміст не манкірує обов'язком завести двухразрядное додаткове поле, де буде записувати показники ступеня, які зазвичай 10 від 0 до 16 а розрядів при цьому загальним числом буде десять: 8+2. Деякі варіанти запису, що дозволяє формат чисел з плаваючою комою: 12345678000000000000; 00000012345678; 12345678; 12345678 і так далі. У цього формату є навіть одиниця вимірювання швидкості! Вірніше, швидкодії обчислювальної системи, яка фіксує швидкість, з якою комп'ютер виконує операції, де є представлення чисел з плаваючою комою. Вимірюється це швидкодію в одиницях FLOPS (floating-point operations per second, що перекладається як кількість операцій в секунду з числами з плаваючою комою). Ця одиниця є основною у вимірюванні швидкості обчислювальної системи.Структура
Записати числа у форматі з плаваючою коми потрібно таким чином, дотримуючись послідовність обов'язкових частин, оскільки ця запис є експоненціальною, де представлені дійсні числа як мантиса і порядок. Це необхідно для подання занадто великих і дуже малих чисел, їх набагато зручніше читати. Обов'язкові частини: записуване число (N), мантиса (M), знак порядку (p) і порядок (n). Два останніх знака утворюють характеристику числа. Значить, N = M . n p . Так записуються числа з плаваючою комою. Приклади будуть різноманітні.1. Потрібно записати числом один мільйон так, щоб не заплутатися в нулях. 1000000 - це нормальна запис, арифметична. А комп'ютерна виглядає так: 10 . 10 6 . Тобто, десять шостого ступеня - три знака, які помістилися цілих шість нулів. Таким чином і відбувається представлення чисел з фіксованою і плаваючою комою, де відразу ж можна виявити відмінності в написанні. 2. А таке важке число, як 1435000000 (один мільярд чотириста тридцять п'ять тисяч) теж просто може бути записано: 1435 . 10 9 всього лише. Так само і зі знаком мінус можна записати будь-яке число. Ось цим і відрізняються один від одного числа з фіксованою і плаваючою комою. Але це великі числа, як бути з малими? Так теж легко. 3. Наприклад, як позначити одну мільйонну? 0000001 = 10 . 10 -6 . Значно полегшуються і написання числа, і його прочитання. 4. А складніше? П'ятсот сорок шоста мільярдна: 0000000546 = 546 . 10 -9 . Ось. Діапазон подання чисел з плаваючою комою дуже широкий.
Форма
Форма числа може бути нормальною або нормалізованої. Нормальна - завжди дотримується точність чисел з плаваючою комою. Потрібно відзначити, що мантиса в цій формі, не враховуючи знак, знаходиться на половині інтервалу: 0 1 значить, 0 ? a < 1. Не в нормальной форме число свою точность теряет. Недостатком нормальной форми числа является то, что многие числа можно записивать разними способами, то есть неоднозначно. Пример разной записи одного и того же числа: 0,0001 = 0, 000001 . 10 2 = 000001 . 10 1 = 00001 . 10 0 = 0001 . 10 -1 = 001 . 10 -2 і так можна ще багато. Саме тому в інформатиці використовується інша, нормалізована форма запису, де мантиса десяткових чисел приймає значення від одиниці (включно) і таким чином до десяти (не включно), і таким же чином мантиса двійкових чисел приймає значення від одиниці (включно) до двійки (не включно).Отже, 1 ? a < 10. Ето - двоичние числа с плавающей запятой, и данная форма записи любое число (кроме ноля) фиксирует единственним образом. Но тоже есть недостаток - невозможность в этом виде представить ноль. Поэтому информатикой предусматривается для числа 0 употребление специального признака (бит). Целая часть числа (старший разряд) мантисси в двоичном числе кроме нуля в нормализованной форме равна 1 (неявная единица). Такая запись используется стандартом IEEE 754. Позиционние системи счисления, где основание больше двух (троичная, четверичная и другие системи), это свойство не приобрели.
Речові числа
Речові числа з плаваючою комою зазвичай і бувають, оскільки це не єдиний, але дуже зручний спосіб подання дійсного числа, як би компроміс між діапазоном значень і точністю. Це аналог експоненційної запису, тільки виконаною в комп'ютері. Число з плаваючою комою - набір з окремих двійкових розрядів, разделяющихся на знак (sign), порядок (exponent) і мантиссу (mantis). Найпоширеніший формат IEEE 754 представляє число з плаваючою комою як набір бітів, які кодують однією своєю частиною мантиссу, іншою частиною - ступінь, і одним бітом вказується знак числа: нуль - це якщо воно позитивне, одиниця - якщо число від'ємне. Весь порядок записується цілим числом (код зі зсувом), а мантиса - в нормалізованої формі, її дробова частина - в двійковій системі. Кожен знак - це один біт, що вказує знак для повністю числа з плаваючою точкою. Мантиса і порядок - цілі числа, вони вкупі зі знаком і роблять подання числа з плаваючою комою. Порядок можна називати експонентою або показником ступеня. Далеко не всі речові числа можна представити в комп'ютері у їхньому точному значенні, інші ж представляються наближеними значеннями. Набагато більш простий варіант - представити дійсне число з фіксованою точкою, де речова і ціла частини будуть зберігатися окремо. Найімовірніше, таким чином, щоб цілої частини завжди відводилося Х біт, а дробової - Y біт. Але архітектури процесорів не знають такого способу, а тому перевага віддається числа з плаваючою комою.Додавання
Додавання чисел з плаваючою комою досить просто. У зв'язку зі стандартом IEEE 754 одинарна точність числа має величезну кількість біт, тому краще відразу переходити до прикладів, причому краще взяти найменшу подання числа з плаваючою комою. Наприклад, два числа - X і Y.Змінна
Знак
Експонента
Мантиса
X
0
1001
110
Y
0
0111
000
Кроки будуть наступними: а) Числа потрібно подати до нормованому вигляді. Явно видається прихована одиниця. Х = 1110 . 2 2 , а Y = 1000 . 2 0 . б) Продовжити процес складання можна, тільки зрівнявши експоненти, а для цього потрібно переписати значення Y. Воно буде відповідати значенню нормалізованого числа, хоча фактично - денормализуется. Обчислити різницю експонент ступеня 2 - 0 = 2. Тепер зрушити мантиссу для компенсації цих змін, тобто додати 2 до показника другого доданку, зсунувши таким чином кому прихованої одиниці на два пункти вліво. Виходить 00100 . 2 2 . Це і буде еквівалент раніше значенням Y, тобто вже Y'. в) Тепер потрібно скласти мантиси числа Х і скоригованого Y. 1110 + 001 = 100 Експонента все ще дорівнює представленому показником Х, яка дорівнює 2. г) Сума, отримана на попередньому етапі, змістила одиницю нормалізації, значить, потрібно зрушити експоненту і підсумовування повторити. 100 з двома бітами ліворуч від коми, тепер потрібно нормалізувати, тобто, перемістити кому вліво на один пункт, а експоненту відповідно збільшити на 1. Виходить 1000 . 2 3 . д) Прийшла пора конвертувати число з плаваючою комою в однобайтную систему.
Сума
Знак
Експонента
Мантиса
X + Y
0
1010
000