Я прочитал много ответов, но, кажется, никто не объясняет, откуда взялось слово double. Я помню очень хорошее объяснение, данное мне профессором университета несколько лет назад.
Вспоминая стиль ответа VonC, в представлении с плавающей запятой одинарной точности используется 32-битное слово.
- 1 бит для знака , S
- 8 бит для экспоненты, 'E'
- 24 бита для дроби, также называемой мантиссой или коэффициентом (хотя представлены только 23). Назовем его «М» (для мантисса я предпочитаю это имя, поскольку «дробь» может быть неправильно понята).
Представление:
S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM
bits: 31 30 23 22 0
(Чтобы отметить, бит знака является последним, а не первым.)
В представлении с плавающей запятой двойной точности используется слово длиной 64 бита.
- 1 бит для знака , S
- 11 бит для экспоненты, 'E'
- 53 бита для дроби / мантиссы / коэффициента (хотя представлены только 52), 'M'
Представление:
S EEEEEEEEEEE MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
bits: 63 62 52 51 0
Как вы могли заметить, я написал, что мантисса в обоих типах содержит на один бит больше информации по сравнению с ее представлением. Фактически, мантисса - это число, представленное без всякого несущественного 0
. Например,
- 0,000124 становится 0,124 × 10 −3
- 237,141 становится 0,237141 × 10 3
Это означает, что мантисса всегда будет в форме
0. α 1 α 2 ... α t × β p
где β - база представления. Но поскольку дробь является двоичным числом, α 1 всегда будет равно 1, поэтому дробь можно переписать как 1.α 2 α 3 sub> ... α t + 1 × 2 p и начальная 1 может быть неявно принята, освобождая место для дополнительного бита (α t + 1 < / sub>).
Очевидно, что удвоение 32 - это 64, но это слово пришло не из этого.
точность указывает количество десятичных цифр, которые являются правильными, то есть без каких-либо ошибок представления или приближения. Другими словами, он указывает, сколько десятичных цифр можно безопасно использовать.
С учетом сказанного легко оценить количество десятичных цифр, которые можно безопасно использовать:
- одинарная точность: log 10 (2 24), что составляет примерно 7-8 десятичных цифр.
- двойная точность: log 10 (2 53), что составляет примерно 15–16 десятичных цифр.
person
Alessandro
schedule
24.02.2017