Форми представлення чисел. Порівняння методів фіксованої та плаваючої коми.
Необхідність у вказівці положення коми відпадає, якщо місце коми в розрядної сітки машини наперед фіксовано раз і назавжди. Така форма представлення чисел називається уявленням з фіксованою комою (крапкою). Оскільки числа позитивні і негативні, то формат (розрядна сітка) машинного зображення розбивається на знакову частину і поле числа. У полі числа розміщується саме зображення числа, яке ми умовно називатимемо мантисою числа. Для кодування знаку числа використовується самий старший розряд розрядної сітки, відведеної для зображення двійкового числа, а решта розрядів відводиться під мантису числа. Положення коми в розрядній сітці строго фіксується, звичайно або правіше наймолодшого розряду мантиси, або ліво самого старшого. У першому випадку число представляється як ціле, в другому - як правильний дріб. В даний час в переважній більшості в комп'ютерах у форматі з фіксованою крапкою представляються цілі числа. У знакову частину записується інформація про знак числа. Прийнято, що знак позитивного числа "+" зображається символом 0, а знак негативного числа "-" зображається символом 1. Наприклад, в двійковому коді, використовуючи 6-розрядну сітку, число 7 у формі з фіксованою комою можна представити у вигляді:
0.001112,
де цифра ліво крапки це знак числа, а п'ять цифр правіше за крапку - мантиса числа в прямому коді. Тут мається на увазі, що кома фіксована правіше молодшого розряду, а крапка в зображенні числа в даному випадку просто розділяє знаковий біт від мантиси числа. Надалі часто використовуватиметься в прикладах такий вид представлення числа в машинній формі. Можна використовувати і іншу форму представлення числа в машинній формі:
[0]001112,
де знаковий розряд виділяється квадратними дужками. Кількість розрядів в розрядній сітці, відведену для зображення мантиси числа, визначає діапазон і точність представлення числа з фіксованою комою. Максимальне по абсолютній величині двійкове число зображається одиницями у всіх розрядах, виключаючи знаковий, тобто для цілого числа |A|max = (2(n-1) - 1), де n - повна довжина розрядної сітки. У разі 16-розрядної сітки |A|max = (2(16-1) - 1) = 3276710 , тобто діапазон представлення цілих чисел в цьому випадку буде від +3276710 до -3276710 . Для випадку, коли кома фіксується правіше молодшого розряду мантиси, тобто для цілих чисел, числа, у яких модуль більше, ніж (2(n-1) - 1) і менше одиниці не представляються у формі з фіксованою комою. Числа, по абсолютній величині менше одиниці молодшого розряду розрядної сітки, називаються в цьому випадку машинним нулем. Негативний нуль заборонений. В деяких випадках, коли можна оперувати тільки модулями чисел, вся розрядна сітка, включаючи самий старший розряд, відводиться для представлення числа, що дозволяє розширити діапазон зображення чисел.
Форма представлення чисел з плаваючою комою
У загальному випадку число у формі з плаваючою комою представляється у вигляді: A = mq p , де m - мантиса числа, q - підстава системи числення q p - порядок числа, який для спрощення в прикладах іноді зображатимемо як P. Тоді очевидно, що p - це показник ступеня порядку, який звичайно називають просто порядком числа, оскільки в основному завжди q = 2. Отже попередній вираз можна записати в наступному вигляді:A = mAPA, маючи на увазі, що в комп'ютерах звичайно q = 2.Так, наприклад, число 1984 у формі з плаваючою комою в десятковій системі числення можна записати таким чином:
1984,0Ч100 0,1984 104
19,84Ч102 198400 10-2 і т.д.
Число з плаваючою комою прийняте представляти в так званому нормалізованому вигляді для максимально точного представлення числа. Якщо виконується нерівність q-1 |m| <1,
а у разі двійкової системи числення: 0.5 |m| <1, то вважається, що число представлене в нормалізованому вигляді. Наприклад, 0,1984Ч104 є нормалізованим видом числа 1984 у формі з плаваючою комою в десятковій системі числення. Таким чином, у двійкового нормалізованого числа у формі з плаваючою комою мантиса - правильний дріб і в старшому розряді мантиси завжди стоїть 1. Операція приведення числа до нормалізованого вигляду називається нормалізацією. Нормалізація чисел в комп'ютері виконується або автоматично чи ж за спеціальною програмою.
Оскільки система числення для заданого цифрового автомата (комп'ютера) залишається постійною, то при представленні числа у форматі з плаваючою комою немає необхідності указувати її підставу, досить лише представити показник ступеня порядку числа. Для представлення двійкового числа у формі з плаваючою комою в розрядній сітці, виділеній для цієї мети, відводиться по одному розряду для представлення знаку числа Sm і знаку показника ступеня порядку SP; певне число розрядів для представлення значення самого показника p, а також розряди для розміщення значення модуля мантиси m. Наприклад, можливий наступний варіант:
Тобто [A] = Sp pASmmA Звичайно у форматі з плаваючою комою замість показника p використовують так звану характеристику ("зміщений порядок"): r = p + l, де l - надлишок (зсув), значення якого підбирається так, щоб при зміні значення показника від деякого мінімального значення -|pmax| до максимального +|pmax|, характеристика r мінялася від 0 до rmax. Отже, характеристика не міняє свого знаку. У такому разі відпадає необхідність у відображенні знаку порядку Sp. Для цього приймається, що l = 2k-1, де до - число розрядів, виделених для представлення порядку числа у форматі з плаваючою комою. Тоді формат числа з плаваючою комою можна представити, зокрема, таким чином:
Тобто [A] = Sm r mA Такий формат і використовується, в основному, в даний час. Розглянемо декілька прикладів представлення чисел у формі з плаваючою комою. Заздалегідь нагадаємо, що показник ступеня двійки в розрядах розрядної сітки завдовжки n, відведеної для представлення цілих чисел, змінюється від 0 до n-1, а у разі правильних дробових чисел - від -1 до -n.
Якщо для представлення показника порядку виділені 4 розряди, то l = 23 = 810 = 10002. Для цього випадку в таблиці 3.1 приведені значення показника порядку, характеристики і мантиси для деяких чисел, представлених у формі з плаваючою комою.
Т а б л і ц а 3.1.
Наприклад, в 16-ти розрядних комп'ютерах для представлення двійкового числа у формі з плаваючою комою із звичайною точністю відводиться 4 байти, тобто 2 16-розрядних слова:
Розряди 14е7 старшого слова числа використовуються для представлення характеристики числа. У решті розрядів старшого слова і у всьому молодшому слові розміщується модуль мантиси числа. 15-й розряд старшого слова використовується під знак числа.Одиниця самого старшого розряду нормалізованої мантиси звичайно є "прихованою", т.е мається на увазі і не відображається у форматі числа. 7-ої розряд старшого слова, в якому повинна була бути відображена ця одиниця, використовується як молодший розряд характеристики, що дозволяє збільшити діапазон представлення чисел у форматі з плаваючою комою. Таким чином, мантиса в такому варіанті відображається, починаючи з розряду, наступного після самого старшого. При всіх операціях з мантисою числа цю обставину треба враховувати і перед початком цих операцій відновлювати старший розряд мантиси в тих регістрах, куди завантажується мантиса числа для виконання над нею якихось процедур. Після завершення цих процедур під час формування відображення нормалізованого числа у відведеній для нього розрядній сітці машинних слів, старша одиниця мантиси знову відкидається. 8-розрядне поле порядку дозволяє змінювати показник порядку в межах від -12810 до +12710, причому показник порядку записується з надміром l = 2008 или 12810.. На відміну від показника порядку, як вже наголошувалося, характеристика не міняє свого знаку і в даному випадку змінюється від 0 (при p = -12810) до 3778 (при p = +12710), причому r = 2008 при p = 0. Виняток становить число 0: нуль із звичайною і подвійною точністю виражається нульовою характеристикою і нульовою мантисою.