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

Від недоліків ФЗ в значній мірі вільна форма представлення чисел з плаваючою комою (ПЗ), відома також під назвами нормальної або по-лулогаріфміческой форми. В даному варіанті кожне число розбивається на дві групи цифр. Перша група цифр називається мантиссой, друга - порядком. Число представляється у вигляді добутку X = ± mq ± p, де т - мантиса числа X, р - порядок числа, q - основа системи числення.

Для подання числа в формі з ПЗ потрібно задати знаки мантиси і по-рядка, їх модулі в q -ічном коді, а також заснування системи числення (рис. 8.7). Нормальна форма неоднозначна, так як взаємне зміна т ір призводить до «плавання» коми, що навіть зумовлено назва цієї форми.

Мал. 8.7. Форма подання чисел з плаваючою комою.

Діапазон і точність представлення чисел з ПТ залежать від числа розрядів, від-вводяться під порядок і мантиссу. Крім розрядності порядку і мантиси діапазон представлення чисел зави-сит і від підстави використовуваної системи числення, яке може бути отлич-ним від 2. Наприклад, в універсальних ВМ (мейнфреймах) фірми IBM использу-ється база 16. Це дозволяє при однаковій кількості бітів, відведених під порядок, представляти числа у більшому діапазоні. Так, якщо поле порядку дорівнює 7 бітам, максимальне значення qp, на яке множиться мантиса, дорівнює 2 128 (при (q = 2) або 16 128 (при q = 16), а діапазони уявлення чисел соответствен-но складуть 10 -19 <|Х| <10 +19 и 10 -76 <|Х| <10 +76. Известны также случаи использо-вания базы 8, например, в ВМ В-5500 фирмы Burroughs.

У більшості обчислювальних машин для спрощення операцій над поряд-ками останні призводять до цілим позитивним числам, застосовуючи так називаючи-емий зміщений порядок. Для цього до істинного порядку додається ціле по-ложітельное число - зміщення (рис. 8.8). Наприклад, в системі зі зміщенням 128 порядок -3 представляється як 125 (-3 + 128). Зазвичай зміщення вибирається рівним половині представимо діапазону порядків. Відзначимо, що зміщений порядок займає все біти поля порядку, в тому числі і той, який раніше ис-користувався для запису знака порядку.

Ріс.8.8.Форма числа з ПЗ зі зміщеним порядком

Мантиса в числах з ПЗ зазвичай представляється в нормалізованому формі. Це означає, що на мантиссу накладаються такі умови, щоб вона по модулю була менше одиниці (| q | <1), а первая цифра после точки отличалась от нуля. Полу-ченная таким образом мантисса называется нормализованной. Для применяемых в ВМ систем счисления можно записать:

Якщо перші i цифр мантиси дорівнюють нулю, для нормалізації її потрібно сдви-нуть щодо коми на i розрядів вліво з одночасним зменшенням порядку на i одиниць. В результаті такої операції число не змінюється.

У прикладі для шістнадцятковій системи після нормалізації старша цифра в двійковому поданні містить попереду три нуля (0001). Це кілька умень-шает точність представлення чисел в порівнянні з двійковій системою при оди-наково числі двійкових розрядів, відведених під мантиссу.

Якщо для запису числа з ПЗ використовується база 2 (q = 2), то часто застосовують ще один спосіб підвищення точності представлення мантиси, званий при-емом прихованої одиниці. Суть його в тому, що в нормалізованої мантиси старша цифра завжди дорівнює одиниці (для подання нуля використовується спеціальна кодова комбінація), отже, ця цифра може не записуватися, а подра-зумеваться. Запис мантиси починають з її другої цифри, і це дозволяє задей-відати додатковий значущий біт для більш точного уявлення числа. Слід зазначити, що значення порядку в даному випадку не змінюється. Прихована одиниця перед виконанням арифметичних операцій відновлюється, а при записі результату - видаляється. Таким чином, нормалізована мантиса 0,101000 (1) при використанні методу «прихованої одиниці» матиме вигляд 0,010001 (в дужках вказана цифра, яка не помістилися в поле мантиси при стан-дротяні записи).

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

Розглянуті принципи подання чисел з ПЗ пояснимо на прикладі. На ріс.8.9 представлений типовий 32-бітовий формат числа з ПЗ. Старший (ле-вий) біт містить знак числа. Значення зміщеного порядку зберігається в розрядах з 1-го по 8-й і може перебувати в діапазоні від 0 до 255. Для отримання фактичних-кого значення порядку з вмісту цього поля потрібно відняти фіксоване значення, рівне 128. З таким зміщенням фактичні значення порядку можуть лежати в діапазоні від -128 до +127. У прикладі передбачається, що підстава сі-стеми числення дорівнює 2. Третє поле слова містить нормалізовану мантіс-су з прихованим розрядом (одиницею). Завдяки такому прийому 23-розрядне поле дозволяє зберігати 24-розрядну мантиссу в діапазоні від 0,5 до 1,0.

Мал. 8.9. Типовий 32-бітовий формат числа з плаваючою комою.

На рис. 8.10 наведені діапазони чисел, які можуть бути записані з по-міццю 32-розрядної слова.

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

Мал. 8.10. Числа, представимо в 32-бітових форматах: а - цілі числа з фіксованою комою; б - числа з плаваючою комою.

У варіанті з ФЗ для цілих чисел в додатковому коді можуть бути представ-лені всі цілі числа від -2 31 до 2 31 - 1, тобто всього 2 32 різних чисел (див. Рис. 8.10, а). Для випадку ПЗ можливі наступні діапазони чисел (див. Рис. 8.10, б):

негативні числа між - (1 - 2 -24) х 2 127 і -0,5 х 2 -128;

позитивні числа між 0,5 х 2 -128 і (1 - 2 -24) х 2 127.

У цю область не включені п'ять ділянок:

негативні числа, менші ніж - (1 - 2-24) х 2 127 - негативне пере-конання;

негативні числа, великі ніж -0,5 х 2 -128 - негативна втрата зна-чімості;

позитивні числа, менші ніж 0,5 х 2-28- позитивна втрата значи-мости;

позитивні числа, великі ніж (1 - 2-2а) х 2 127 - позитивне переповнення.

Показана запис числа з ПЗ не враховує нульового значення. Для цієї мети використовується спеціальна кодова комбінація. Переповнення виникають, коли в результаті арифметичної операції виходить значення більше, ніж можна уявити порядком 127 (2 120 х 2 100 = 2 230). Втрата значущості - це коли резуль-тат є занадто маленьке дробове значення (2 -120 х 2 -100 = 2 -230). Втрата значущості є менш серйозною проблемою, оскільки такою резуль-тат зазвичай розглядають як нульовий.

Слід також зазначити, що числа в формі з ПЗ, на відміну від чисел у формі з ФЗ, розміщені на числовій осі нерівномірно. Можливі значення на початку числової осі розташовані щільніше, а в міру руху вправо - все рідше (ріс.8.11). Це означає, що багато обчислення призводять до результату, який не є точним, тобто представляє собою округлення до найближчого зна-ня, представимо в цій формі записи.

Мал. 8.11. Щільність чисел з плаваючою комою на числової осі.

Для формату, зображеного на ріс.8.9, має місце протиріччя між діа-пазоном і точністю. Якщо збільшити число бітів, відведених під порядок, рас-ширяється діапазон представимо чисел. Однак, оскільки може бути представ-лено тільки фіксоване число різних значень, зменшується щільність і тим самим точність. Єдиний шлях збільшення як діапазону, так і точ-ності - збільшення кількості розрядів, тому в більшості ВМ пропонує-ся використовувати числа в одинарному і подвійному форматах. Наприклад, число оди-Нарнії формату може займати 32 біта, а подвійного - 64 біта.

Числа з плаваючою комою в різних ВМ мають кілька різних форма-тов. У табл. 3.1 наводяться основні параметри для декількох систем представ-лення чисел у формі з ПЗ. В даний час для всіх ВМ рекомендований стан-дарт, розроблений загальновизнаним міжнародним центром стандартизації IEEE (Institute of Electrical and Electronics Engineers).

Таблиця 8.1. Варіанти форматів чисел з плаваючою комою