Число двойной точности

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Double»)
Перейти к: навигация, поиск

Число́ двойно́й то́чности (Double precision, Double) — компьютерный формат представления чисел, занимающий в памяти две последовательных ячейки с точностью мантиссы в зависимости от разрядности процессора (компьютерное слово; в случае 32-битного компьютера — 64 бита, или 8 байт). Как правило, обозначает формат числа с плавающей запятой стандарта IEEE 754. Числа с плавающей запятой (двойной/одинарной/четверной точности) поддерживаются сопроцессором (в 80386 выполнен как отдельный модуль, начиная с 80486 является встроенным в главный процессор. Сопроцессор, хотя он сейчас и является частью главного процессора, принято называть FPU — Floating Point Unit, буквально Модуль Плавающей Запятой).

Одним из первых языков программирования, позволявшим использовать числа одинарной(одно машинное слово)и двойной точности с плавающей запятой, был Фортран.

Числа двойной точности с плавающей запятой обеспечивают относительную точность около \log_{10}(2^{53}) \approx 15.955 десятичных цифр и масштабы в диапазоне от 10−308 до примерно 10308. В компьютерах, которые имеют 64-разрядные с плавающей запятой арифметические единицы, большинство численных вычислений осуществляется в двойной точности с плавающей запятой, поскольку использование чисел одинарной точности обеспечивает почти такую же производительность.

Знак
(11 бит)
Порядок
(52 бита)
Мантисса
                                                                                                                               
63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0

Окончательное значение числа равняется ±1,мантисса · 2порядок − 011…11: старший бит мантиссы, всегда равный единице, опускается, а порядок 0 записывается как 2^{10}-1 = 1023. Знак 0 соответствует положительным числам, знак 1 отрицательным.

Существуют также денормализованные числа, записываемые порядком 00…00 и имеющие значение ±0,мантисса · 2−1022. Порядок 11…11 предназначен для записи особых чисел: «бесконечности» и «не-числа» — NaN.

Примеры чисел двойной точности[править | править вики-текст]

0x 3ff0 0000 0000 0000   = 1
0x 3ff0 0000 0000 0001   ≈ 1.0000000000000002 (следующее число, больше 1)
0x 3ff0 0000 0000 0002   ≈ 1.0000000000000004
0x 4000 0000 0000 0000   = 2
0x c000 0000 0000 0000   = –2
0x 0000 0000 0000 0001   = 2-1022-52 ≈ 4.9406564584124654 x 10−324 (Минимальное денормализованное положительное число двойной точности)
0x 000f ffff ffff ffff   = 2-1022 - 2-1022-52 ≈ 2.2250738585072009 x 10-308 (Максимальное денормализованное положительное число двойной точности)
0x 0010 0000 0000 0000   = 2-1022 ≈ 2.2250738585072014 x 10−308 (Минимальное нормализованное положительное число двойной точности)
0x 7fef ffff ffff ffff   = (1 + (1 - 2-52)) x 21023 ≈ 1.7976931348623157 x 10308 (Максимальное число двойной точности)
0x 0000 0000 0000 0000   = 0
0x 8000 0000 0000 0000   = –0
0x 7ff0 0000 0000 0000   = Infinity
0x fff0 0000 0000 0000   = −Infinity
0x 7fff ffff ffff ffff   = NaN
0x 3fd5 5555 5555 5555   ≈ 1/3


См. также[править | править вики-текст]

Ссылки[править | править вики-текст]