Я прочитал много ответов, но, похоже, ни один из них не может правильно объяснить, откуда происходит слово « двойник» . Я помню очень хорошее объяснение, данное профессором университета, которое я имел несколько лет назад.
Вспоминая стиль ответа 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 ... α t + 1 × 2 p, и начальная 1 может быть неявно принята, освободить место для дополнительного бита (α t + 1 ).
Очевидно, что число 32 равно 64, но это не то, откуда пришло слово.
точность указывает количество десятичных цифр, которые правильно , то есть без каких - либо ошибок представления или приближения. Другими словами, это указывает, сколько десятичных цифр можно безопасно использовать.
С учетом сказанного легко подсчитать количество десятичных цифр, которые можно безопасно использовать:
- одинарная точность : log 10 (2 24 ), что составляет около 7 ~ 8 десятичных цифр
- двойная точность : log 10 (2 53 ), что составляет около 15 ~ 16 десятичных цифр