Как пользоваться
- Выберите Формат: половинная, одинарная или двойная точность.
- В поле Введите выберите Десятичное число, чтобы перевести число, или Битовый шаблон (шестнадцатеричный), чтобы прочитать сохранённые биты.
- Введите значение в поле Значение. Страница обновляется по мере ввода.
- Прочитайте цветные биты, таблицу полей и таблицу результата. Погрешность округления показывается только для десятичного числа.
Как число делится на поля
Двоичное число с плавающей точкой имеет три поля: бит знака, поле порядка и поле дробной части. Одинарная точность использует 1, 8 и 23 бита; двойная — 1, 11 и 52; половинная — 1, 5 и 10. Для нормального числа значение равно (−1)^знак × 1,f × 2^(поле порядка − смещение), где f — дробная часть, а смещение равно 127 для одинарной точности (IEEE 754 определяет поля в своих двоичных форматах).
0,15625 = 1,25 × 2^−3 → знак 0, порядок 127 − 3 = 124 = 01111100, дробная часть 0100… → 0 01111100 01000000000000000000000 = 3E200000
Округление до ближайшего значения
Большинство десятичных чисел нельзя хранить точно в двоичном виде. Страница округляет введённое число до ближайшего значения, которое формат может хранить, а при равном расстоянии выбирается значение с чётным последним битом. Расстояние между двумя соседними значениями равно одному ulp (единице в последнем разряде), а погрешность округления не превышает половины ulp. Для 0,1 в одинарной точности хранимое значение равно 0,100000001490116119384765625, поэтому погрешность равна +1,49 × 10^−9, что составляет 0,2 ulp.
Особые значения
- Ноль: порядок и дробная часть из нулей. Бит знака сохраняется, поэтому −0 и +0 — два разных шаблона битов.
- Субнормальные числа: поле порядка из нулей и без скрытого бита. Они заполняют промежуток между нулём и наименьшим нормальным числом.
- Бесконечность: порядок из одних единиц и дробная часть из нулей. Десятичное число, которое округляется за наибольшее конечное число, становится бесконечностью.
- NaN: порядок из одних единиц и ненулевая дробная часть. Старший бит дробной части отличает тихий NaN от сигнального; остальная часть дробной части — полезная нагрузка.
Что страница не охватывает
- Арифметика: страница показывает, как хранится число, а не результат сложения или умножения двух хранимых чисел.
- Десятичные форматы с плавающей точкой IEEE 754-2008, которые используют основание 10, и другие форматы, например bfloat16 или 8-битные числа с плавающей точкой.
- Целые числа в дополнительном коде: см. калькулятор дополнительного кода.
Пример: 0.1 в одинарной точности
Введите 0.1 при формате «Одинарная точность». 0,1 — это 1,6 × 2^−4, а значащую часть 1,6 нельзя записать 23 битами дробной части. Дробная часть округляется вверх, поэтому хранимое значение немного больше 0,1.
| Результат | Значение |
|---|---|
| Шестнадцатеричная запись | 3DCCCCCD |
| Точное хранимое значение | 0,100000001490116119384765625 |
| Погрешность округления (хранимое минус введённое) | +1,490116119384765625e-9 |
| Погрешность округления в ulp | +0,200 |
Частые вопросы
Почему 0,1 + 0,2 не равно точно 0,3 в компьютере?
Ни 0,1, ни 0,2 нельзя хранить точно в двоичном виде, а их сумма округляется ещё раз. В двойной точности 0,1 + 0,2 даёт 0,30000000000000004, значение чуть выше хранимого 0,3.
В чём разница между точным хранимым значением и введённым числом?
Введённое число — это десятичная запись, которую вы написали. Точное хранимое значение — двоичное число, которое формат действительно хранит, записанное полностью. Погрешность округления — их разность, поэтому видно, насколько они различаются.
Что означает ulp?
Ulp — это единица в последнем разряде: промежуток между хранимым значением и следующим в том же двоичном порядке. Округление до ближайшего значения никогда не уходит дальше чем на половину ulp, а страница показывает погрешность и числом, и в ulp.
Почему 1e39 становится бесконечностью в одинарной точности?
Наибольшее значение одинарной точности — около 3,4028235 × 10^38. Число, которое округляется за него, не имеет конечного хранимого значения, поэтому формат использует бесконечность, а страница отмечает результат как слишком большой.
Может ли NaN хранить информацию?
Да. Биты дробной части NaN не используются для его значения, поэтому программа может записать туда полезную нагрузку. Страница показывает дробную часть NaN как полезную нагрузку и отмечает, тихий он или сигнальный.
Источники
- IEEE 754 (IEEE Standards Association, на английском)
- Wikipedia (на английском): IEEE 754
- Wikipedia (на английском): Single-precision floating-point format
- Wikipedia (на английском): Double-precision floating-point format
- Wikipedia (на английском): Half-precision floating-point format
Цифры и текст в последний раз проверены среда, 11 ноября 2026 г..