logo
AOM / Мельник А

2.6.3. Числа із рухомою комою

Не завжди діапазон представлення чисел у форматі з фіксованою комою є достатнім для проведення обчислень. В такому випадку використовується формат представлення чисел із рухомою комою.

У загальному випадку в форматі з рухомою комою число подається у вигляді А = ± m.q±p,де m- мантиса числа, q- основа порядку, ± р - порядок числа. Попередній вираз мож­на записати як А = ±mA • ± рA , де упущено основу порядку, оскільки в комп'ютерах вона не­змінна. В більшості випадків основа порядку дорівнює основі системи числення, тобто 2.

66

Для однозначного і максимально точного відображення чисел число з рухомою ко­мою представляють у нормалізованому вигляді. Якщо виконується нерівність q- 1 < = |m|<1, а у випадку двійкової системи числення 0.5 < = |т| <1 (старший двійковий розряд мантиси дорівнює 1), то вважається, що число представлене в нормалізованому вигляді.

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

Для представлення двійкового числа у форматі з рухомою комою у розрядній сітці, наданій для цієї мети, виділяється:

■ розряди для представлення значення модуля мантиси m(поле мантиси). Наприклад, можливий такий варіант, коли формат числа складається з чотирьох по­лів (рис. 2.5) тобто, [[А] = SPpASmmA.

Зазвичай у форматі з рухомою комою замість порядку р використовують так звану характеристику ("зміщений порядок") г = ± р + 1, де 1 - надлишок (зсув), значення якого

підбирається таким чином, щоб у разі зміни значення показника від деякого мінімально-

го значення -|рmin| до максимального +|рmax|, характеристика г змінювалася від 1 до гmax .

Отже, характеристика не змінює свого знаку. У цьому випадку відпадає необхідність у відображенні знаку порядку S. Для цього приймається, що 1 = 2k-1, де k - число розрядів, виділених для представлення порядку числа у форматі з рухомою комою.

Тоді формат числа з рухомою комою можна подати так, як показано на рис. 2.6 (з ви­користанням трьох полів), тобто, [А] = SmpAmA.

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

Таким чином, мантиса в такому варіанті відображається, починаючи з розряду, що йде після старшого. Це слід враховувати під час виконання будь-якої операції з ман­тисою числа, і перед початком операцій відновлювати старший розряд мантиси. Після завершення операцій формування нормалізованого результату у відведеній для нього розрядній сітці, старша одиниця мантиси знову відкидається. Порядок із k-розрядним полем може змінюватися в межах від -2k-1 + 1 до + 2k+1 - 1 (табл. 2.5, k = 3).

67

Таблиця 2.5

Показник порядку

Прямий код показника

Характеристика (показник + 4)

Примітки

+3

011

111

3 + 4=7

+2

010

110

2 + 4 = 6

+ 1

001

101

1+4 = 5

0

000

100

0 + 4 = 4

-1

101

011

-1+4 = 3

-2

11О

010

-2 + 4 = 2

-3

111

001

-3 + 4=1

000

Ознаку нуля

Як зазначалося, характеристика r - це порядок р з надлишком 1 = 2k-1 Вона не змінює свого знаку і змінюється від 1 (при р = -2k-1) до 2к"' (при р = +2k-1- 1). Винятком є число 0, яке виражається нульовою характеристикою і нульовою мантисою (не обов'язково).

Основною перевагою представлення чисел у форматі з рухомою комою є великий діапазон машинних чисел і висока точність їхнього подання. Діапазон визначається до­вжиною розрядної сітки, виділеної для характеристики, а точність визначається довжи­ною розрядної сітки, виділеної для мантиси.

Особливості виконання операцій над числами з рухомою комою:


Під час арифметичних операцій над числами з рухомою комою виконуються дії як над порядком, так і над мантисою.


Тобто формат з рухомою комою має недолік, який полягає у відсутності унікального представлення для кожного числа. Усі числа, що наводяться на рис. 2.7, є еквівалентни­ми. Слід зауважити, що цього недоліку не мають нормалізовані числа.

68

У деяких моделях комп'ютерів одержало поширення відображення чисел із рухомою комою з основою порядку, рівною цілому ступеню числа 2 (s=2r).При цьому порядок р відображається двійковим цілим числом, а мантиса т - числом, в якому групи по r двій­кових розрядів зображають цифри мантиси з основою системи числення s.

Прикладами вживаних основ порядку є числа 8 та 16.

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

Наприклад, у разі використання шістнадцяткових чисел з рухомою комою число Xвважається нормалізованим, якщо старша шістнадцяткова цифра X.відмінна від 0. Тоб­то у нормалізованому числі три старші двійкові цифри можуть дорівнювати 0. Це дещо зменшує точність представлення чисел при фіксованому числі розрядів мантиси. Якщо r старших шістнадцяткових розрядів мантиси рівні 0, то нормалізація в цьому випадку полягає в зсуві вліво мантиси на г шістнадцяткових розрядів і відповідному зменшенні показника порядку на r одиниць. Зсув на один шістнадцятковий розряд виконується як зсув мантиси відразу на чотири двійкові розряди.

Розглянемо кілька прикладів.

Припустимо, що потрібно подати у форматі з рухомою комою число 17. Для десят­кової системи 17 = 17.0 х 1010 = 1.7 х 101 = 0.17х 102. Аналогічно в двійковій системі 1710 = 100012 х 2° = 1000.12 х 21 = 100.01, х 22 = 10.0012 х 23 = 1.00012 х 24 = 0.10001, х 25. Якщо вико­ристати останній запис, то 8-розрядна мантиса числа буде рівною 10001000, а 5-розряд-ний порядок буде рівним 00101. Тоді число 17 в форматі з рухомою комою в двійковій системі має вигляд, показаний на рис. 2.8 а. Використовуючи формат з рухомою комою можна представляти числа в значно ширшому діапазоні, ніж використовуючи формат з фіксованою комою, при тих самих 14 розрядах. Так, на рис. 2.8 b) показано число 65536 = 0.12 х 217 у форматі з рухомою комою, для представлення якого у форматі з фіксованою комою потрібно було б 16 розрядів.

Як вже зазначалося, ідея зміщення порядку полягає в перетворенні його значень лише в додатні числа. Зміщення здійснюється шляхом додавання до кожного значення порядку фіксованого числа, рівного середньому значенню величини діапазону можли­вих чисел, яке вибирається для представлення нуля. В приведених вище прикладах як зміщення потрібно взяти число 16, тому що воно є середнім між 0 і 31 (порядок має 5 бітів, тому дозволяє представити 25 = 32 значень). Будь-яке число, більше ніж 16, в полі порядку буде представляти додатне значення, а менше - від'ємне. Зауважимо іще раз, що значення порядку з усіма нулями та одиницями зазвичай резервується для спеціальних випадків (таких як нуль та нескінченість).

69

Повернемося до попереднього прикладу. Ми обчислили 1710= 0.100012х25. Зміщення порядку рівне 16 + 5 = 21, і число має вигляд, показаний на рис. 2.9 а. Аналогічно для числа 0.25=1.0х2-2 будемо мати представлення, показане на рис. 2.9b.

Розглянемо іще один приклад числа з рухомою комою, в даному випадку нормалі­зованого. Виразимо 0.0312510 в форматі з рухомою комою із зміщенням порядку на 16. Тоді 0.0312510 = 0.000012 х 2° = 0.0001 х 2-1 = 0.001 х 2-2 = 0.01 х 2-3 = 0.1 х 2-4. Додавши до порядку зміщення отримаємо 16 - 4 = 12. Повний вигляд числа показано на рис. 2.10.

На рис. 2.11 наведено два приклади використовуваного в комп'ютерах формату пред­ставлення чисел з рухомою комою. Зверху наведено формат, який був використаний в комп'ютерах CDC 6600, CDC 7000, та CYBER 170 фірми СКС, а знизу - формат, який був використаний в комп'ютерах системи ІВМ/370 фірми IBM, причому тут основою поряд­ку є число 16, тому мантиса вважається нормалізованою, якщо є хоча б одна одиниця в перших її чотирьох розрядах.

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

70

При потребі іще більшого розширення діапазону представлення даних використо­вується так званий формат з рухомою-рухомою комою. Тут використовується два поля порядку, як це показано на рис, 2.12.

Тут значення числа визначається з виразу А = 2е, де e = Р1 2P2.