Изменения

Перейти к: навигация, поиск

Представление чисел с плавающей точкой

873 байта добавлено, 07:35, 11 ноября 2011
Нет описания правки
'''Плавающая точка (floating point)''' - метод представления действительных чисел, при котором число хранится в виде мантиссы и показателя степени.
}}
Такой метод является компромиссом между точностью и диапазоном представляемых значений.
Представление чисел с плавающей точкой рассмотрим на примере чисел ''двойной точности'' (''double precision'').
Такие числа занимают в памяти два машинных слова (8 байт на 32-битных системах). Наиболее распространенное представление описано в стандарте IEEE 754.
== Числа двойной точности ==
Число с плавающей точкой хранится в нормализованной форме и состоит из трех частей (в скобках указано количество бит, отводимых на каждую секцию в формате double):
# знак (1)# экспонента (показатель степени) (11)# мантисса (52)
В качестве базы (основания степени) используется число 2.
|colspan=4 style="border: none; border-right: 1px solid gray; text-align: right"|0
|}
 
{{Определение
|definition=
'''Нормализованной''' называется форма представления числа, при которой мантисса двоичного числа <tex> mant </tex> лежит в диапазоне <tex> [1, 2) </tex>.
}}
{{Утверждение
Итоговое значение числа вычисляется по формуле:
<br><tex> x = (-1)^{sign} \times (1.mant) \times 2^{exp} </tex>
}}
 
== Нормальная и нормализованная формы ==
{{Определение
|definition=
'''Нормальной''' называется форма представления числа, при которой абсолютное значение мантиссы десятичного числа находится на полуинтервале <tex> [0,1) </tex>.
}}
Недостатком такой записи является тот факт, что числа нельзя записать однозначно: <tex> 0.001 = 0.01 \times 10^0 </tex>.
{{Определение
|definition=
'''Нормализованной''' называется форма представления числа, при которой абсолютное значение мантиссы десятичного числа лежит на полуинтервале <tex> [1, 10) </tex>, а двоичного на полуинтервале <tex> [1, 2) </tex>.
}}
# Так как старший бит двоичного числа, записанного в нормализованной форме, всегда равен 1, его можно опустить. Это используется в стандарте IEEE 754.
# В отличие от целочисленных стандартов (например, integer), имеющих равномерное распределение на всем множестве значений, числа с плавающей точкой (double, например) имеют квазиравномерное распределение.
{{TODO| t=Вставить картинки, когда можно будет загрузить файл}}
# В следствие свойства 3, числа с плавающей точкой имеют постоянную относительную погрешность (в отличие от целочисленных, которые имеют постоянную абсолютную погрешность).
# Очевидно, не все действительные числа возможно представить в виде числа с плавающей точкой.
# Точно в таком формате представимы только числа, являющиеся суммой некоторых обратных степеней двойки (не ниже -53). Остальные числа попадают в некоторый диапазон и округляются до ближайшей его границы. Таким образом, абсолютная погрешность составляет половину величины младшего бита.
# В формате double представимы числа в диапазоне <tex> [1.7 \times 10^-308, 1.7 \times 10^308] </tex>.
== Машинная эпсилон ==
Анонимный участник

Навигация