Лекції - GL22

Досі ми використовували лише цілі числа: знакові та беззнакові. Можна вмовитися вставляти в ці числа десяткову точку на фіксованій позиції. Так ми отримаємо числа із фіксованою точкою. Але такий підхід не можна визнати задовільним, адже на практиці доводиться вести обчислення, в яких одночасно беруть участь дуже великі і дуже маленькі числа (за абсолютною величиною). Для таких обчислень введена система чисел з плаваючою точкою (floating-pointnumbers), або просто плаваючих чисел. Прикметник "плаваючий" показує, що десяткова точка не зафіксована. Для плаваючих чисел введено спеціальний стандарт IEEE754. Він реалізований у досліджуваних нами процесорах.

Плаваюче число може мати багато еквівалентних уявлень. Наприклад,

.

Загальне уявлення плаваючого числа має вигляд:

Тутb-основа системи числення.di- цифри (

gl22
),
0000
. Якщо
gl22
(при
числа
), то така плаваюча система називається нормалізованою. Отже, у наведеному вище прикладі із багатьох уявлень лише одне (
числа
) є нормалізованим. Тоді набір цифр числа називається мантисою,e- порядком (показником), аt- точністю. Плаваюча система визначається чотирма параметрами:b,t,L,U.

Числа, які у плаваючою системі, розташовані на числовій осі нерівномірно. Між 1 і 2 лежить стільки ж чисел, скільки між

точністю
і
0000
, і стільки ж, скільки між 16384 і 32768. У процесорах фірми Intel плаваючі числа представлені у трьох форматах, що носять умовні назви: з одинарною точністю, з подвійною точністю, із розширеною точністю. Спочатку ретельно вивчимо формат із одинарною точністю.

Числа з одинарною точністю

Подання плаваючого числа з одинарною точністюзаймає 4 байти, тобто. його довжина становить 32 біти. Біт 31 відведений для знака числа (0 - позитивні, 1 - негативні, про уявлення плаваючого нуля - розмова особливий), біти 30:23 - для порядку числа, біти 22:0 - для його мантиси.

Тут є свої особливості.

Заснування системи численняb= 2. Система нормалізована. Томуd0= 1 (якщо число не є нулем). Але якщо старша цифра мантиси завжди дорівнює 1, навіщо її зберігати? За цей рахунок виграється додатковий розряд мантиси та збільшується точність. Старша цифра двійкового уявлення зветься "прихований біт" (hiddenbit).

Порядок може бути позитивним та негативним. Так як на порядок відведено 8 біт, то, як ми знаємо, . У якому форматі зберігати порядок? Напрошується рішення: у додатковому коді. Виявляється, це незручно, і використовується уявлення зі зміщенням :

лекції
. Це "зміщення" англійською носить назву bias (пам'ятаєте, нам раніше зустрілися два англійські терміни: offsetі displacement, які перекладаються українською мовою словом "зміщення"). Тоді -128 переводиться в -1 = 11111111, а -127 - в 0 = 00000000. Ці коди будуть використані в особливих цілях. Тому для показника (порядку) залишається діапазон [-126, 127]. Чому вибране таке дивне уявлення зі зміщенням? Тоді легко порівнювати плаваючі числа на "більше-менше". Їх можна порівнювати як довгі цілі, а це робиться дуже швидко.

Тепер подивимося приклад подання числа у форматі зі звичайною точністю, але спочатку навчимося переводити з десяткової у двійкову форму числа від 0 до 1. Для цього зауважимо, що якщо

0000
, тобто
лекції
, де квадратні дужки позначають взяття цілої частини числа. Далі маємо т.д. Так ми по черзі отримуємо цифри двійкової вистави.

приклад. –26.375 подати у форматі зі звичайною точністю.

Абсолютна величина числа дорівнює 26375.

Двійкове уявлення цілої частини: 2610= 110102, як було показано у прикладі 1.1.

Обчислення двійкового уявлення дробової частини числа, подамо у вигляді схеми:

(0.75 - 0) * 2 = 0.75 * 2 = 1.5

(1.5 - 1) * 2 = 0.5 * 2 = 1

Отже, 0,37510 = 0,0112. Перевіримо:.

Ми отримали, що 26.37510 = 11010.0112. Нормалізуємо це число. Для цього потрібно перемістити десяткову точку вліво на чотири позиції. Отримаємо. Обчислимо зміщений порядок: Формуємо уявлення:

символ = 1, т.к. число негативне,

порядок = 1000 0011,

мантіс = 101 0011 0000 0000 0000 0000 (старший біт прихований!)

1100 0001 1101 0011 0000 0000 0000 0000 = C1D30000h.

Перевірку правильності обчислень проведемо кількома способами.

Програми мовою Сі.

Перетворимо покажчик на плаваюче число до покажчика на довге ціле і виведемо на екран вміст.