Представление вещественных чисел — различия между версиями
Proshev (обсуждение | вклад) (→Нормальная форма и нормализованная форма) |
Proshev (обсуждение | вклад) |
||
Строка 13: | Строка 13: | ||
''Нормальной формой'' числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1). Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001×10<sup>0</sup>, 0,001×10<sup>−1</sup>, 0,01×10<sup>−2</sup>, 0,1×10<sup>−3</sup>), поэтому распространена также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно). В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0. | ''Нормальной формой'' числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1). Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001×10<sup>0</sup>, 0,001×10<sup>−1</sup>, 0,01×10<sup>−2</sup>, 0,1×10<sup>−3</sup>), поэтому распространена также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно). В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0. | ||
Так как старший разряд (целая часть числа) мантиссы двоичного числа (кроме 0) в нормализованном виде равен «1», то при записи мантиссы числа в эвм старший разряд можно не записывать, что и используется в стандарте [http://ru.wikipedia.org/wiki/IEEE_754 IEEE 754]. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной и др.), этого свойства нет. | Так как старший разряд (целая часть числа) мантиссы двоичного числа (кроме 0) в нормализованном виде равен «1», то при записи мантиссы числа в эвм старший разряд можно не записывать, что и используется в стандарте [http://ru.wikipedia.org/wiki/IEEE_754 IEEE 754]. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной и др.), этого свойства нет. | ||
+ | |||
+ | === Диапазон чисел, представимых в формате с плавающей запятой === | ||
+ | Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. На обычной 32-битной вычислительной машине, использующей двойную точность (64 бита), мантисса составляет 1 бит знак + 52 бита, показатель — 1 бит знак + 10 бит. Таким образом получаем диапазон точности примерно от | ||
+ | 4,94{{e|−324}} до 1.79{{e|308}} (от 2<sup>−52</sup> × 2<sup>−1022</sup> до ~1 × 2<sup>1024</sup>). Пара значений показателя зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся значения [[NaN]] (Not a Number, не число) и +/-INF (Infinity, [[бесконечность]]), получающихся в результате операций типа деления на ноль нуля, положительных и отрицательных чисел. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы. В специализированных устройствах (например [[GPU]]) поддержка специальных чисел часто отсутствует. Существуют программные пакеты, в которых объём памяти выделенный под мантиссу и показатель задаётся программно, и ограничивается лишь объёмом доступной памяти ЭВМ. | ||
+ | |||
+ | <!-- ============================== Здесь будет добавлена ещё информация ===============--> | ||
+ | <!-- Перевод статьи не окончен --> | ||
+ | <!-- ================================================================================== --> | ||
+ | |||
+ | {| class="standard" | ||
+ | !Точность || Одинарная || Двойная || Расширенная | ||
+ | |- | ||
+ | ! Размер (байты) | ||
+ | | 4 || 8 || 10 | ||
+ | |- | ||
+ | ! Число десятичных знаков | ||
+ | | 7 || 15 || 19 | ||
+ | |- | ||
+ | ! Наименьшее значение (>0), denorm | ||
+ | | 1,4{{e|−45}} || 5,0{{e|−324}} || 1,9{{e|−4951}} | ||
+ | |- | ||
+ | ! Наименьшее значение (>0), normal | ||
+ | | 1,2{{e|−38}} || 2,3{{e|−308}} || 3,4{{e|−4932}} | ||
+ | |- | ||
+ | ! Наибольшее значение | ||
+ | | 3,4×10<sup>+38</sup> || 1,7×10<sup>+308</sup> || 1,1×10<sup>+4932</sup> | ||
+ | |- | ||
+ | ! Поля | ||
+ | | S-E-F || S-E-F || S-E-I-F | ||
+ | |- | ||
+ | ! Размеры полей | ||
+ | | 1-8-23 || 1-11-52 || 1-15-1-63 | ||
+ | |} | ||
+ | * S — знак, E — показатель степени, I — целая часть, F — дробная часть | ||
+ | * Так же, как и для целых, знаковый бит — старший. |
Версия 21:47, 29 октября 2010
Вещественные числа обычно представляются в виде чисел с плавающей запятой.
Определение: |
Плавающая запятая — форма представления дробных чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Наиболее часто используемое представление утверждено в стандарте IEEE 754. |
При этом лишь некоторые из вещественных чисел могут быть представлены в памяти компьютера точным значением, в то время как остальные числа представляются приближёнными значениями.
В наиболее распространённом формате число с плавающей запятой представляется в виде последовательности битов, часть из которых кодирует собой мантиссу числа, другая часть — показатель степени, и ещё один бит используется для указания знака числа, 0 - если число положительное, 1 - если число отрицательное.
Нормальная форма и нормализованная форма
Нормальной формой числа с плавающей запятой называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0; 1). Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001×100, 0,001×10−1, 0,01×10−2, 0,1×10−3), поэтому распространена также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно). В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0. Так как старший разряд (целая часть числа) мантиссы двоичного числа (кроме 0) в нормализованном виде равен «1», то при записи мантиссы числа в эвм старший разряд можно не записывать, что и используется в стандарте IEEE 754. В позиционных системах счисления с основанием большим, чем 2 (в троичной, четверичной и др.), этого свойства нет.
Диапазон чисел, представимых в формате с плавающей запятой
Диапазон чисел, которые можно записать данным способом, зависит от количества бит, отведённых для представления мантиссы и показателя. На обычной 32-битной вычислительной машине, использующей двойную точность (64 бита), мантисса составляет 1 бит знак + 52 бита, показатель — 1 бит знак + 10 бит. Таким образом получаем диапазон точности примерно от 4,94Шаблон:E до 1.79Шаблон:E (от 2−52 × 2−1022 до ~1 × 21024). Пара значений показателя зарезервирована для обеспечения возможности представления специальных чисел. К ним относятся значения NaN (Not a Number, не число) и +/-INF (Infinity, бесконечность), получающихся в результате операций типа деления на ноль нуля, положительных и отрицательных чисел. Также сюда попадают денормализованные числа, у которых мантисса меньше единицы. В специализированных устройствах (например GPU) поддержка специальных чисел часто отсутствует. Существуют программные пакеты, в которых объём памяти выделенный под мантиссу и показатель задаётся программно, и ограничивается лишь объёмом доступной памяти ЭВМ.
Точность | Одинарная | Двойная | Расширенная |
---|---|---|---|
Размер (байты) | 4 | 8 | 10 |
Число десятичных знаков | 7 | 15 | 19 |
Наименьшее значение (>0), denorm | 1,4Шаблон:E | 5,0Шаблон:E | 1,9Шаблон:E |
Наименьшее значение (>0), normal | 1,2Шаблон:E | 2,3Шаблон:E | 3,4Шаблон:E |
Наибольшее значение | 3,4×10+38 | 1,7×10+308 | 1,1×10+4932 |
Поля | S-E-F | S-E-F | S-E-I-F |
Размеры полей | 1-8-23 | 1-11-52 | 1-15-1-63 |
- S — знак, E — показатель степени, I — целая часть, F — дробная часть
- Так же, как и для целых, знаковый бит — старший.