Конвертер чисел с плавающей точкой IEEE 754

Преобразуйте десятичные числа в 32- и 64-битный IEEE 754 и обратно — со знаком, экспонентой и мантиссой в битах, hex, точным хранимым значением и ошибкой округления, всё в вашем браузере.

Конвертер IEEE 754 работает целиком в вашем браузере, используя стандартные числовые API. Десятичные числа, hex и битовые шаблоны, которые вы преобразуете, остаются на вашем устройстве и никогда не загружаются в ArrayKit.

Открыть конвертер систем счисления

Об инструменте Конвертер IEEE 754

Конвертер IEEE 754 превращает десятичное число в его точное 32-битное (одинарной точности) и 64-битное (двойной точности) представление с плавающей точкой. Он показывает знаковый бит, смещённую экспоненту и мантиссу как отдельные цветные битовые поля, плюс шестнадцатеричное слово, точное значение, которое биты фактически хранят, и ошибку округления между тем, что вы ввели, и тем, что сохраняет машина. Поскольку двоичная система не может представить большинство десятичных дробей, значения вроде 0.1 отклоняются на крошечную величину — этот инструмент делает такое отклонение видимым. Работайте и в обратную сторону: вставьте hex-шаблон или сырую битовую строку и восстановите десятичное число, в которое они декодируются. Он создан для разработчиков, отлаживающих точность float, сравнивающих float32 с float64 или изучающих Infinity, NaN и денормализованные числа. Каждое преобразование выполняется локально в вашем браузере; числа, которые вы вводите, никогда не покидают ваше устройство.

Возможности

Как использовать Конвертер IEEE 754

  1. Оставьте выбранным «Десятичное → IEEE 754» и введите число, например 0.1
  2. Выберите 32 или 64 бита, чтобы увидеть биты одинарной или двойной точности
  3. Прочитайте поля знака, экспоненты и мантиссы, hex и ошибку округления
  4. Переключитесь на «IEEE 754 → Десятичное» и вставьте hex- или двоичный шаблон, чтобы декодировать его обратно

Пример

Ввод

0.1  (as float32)

Результат

hex:            0x3dcccccd
stored value:   0.10000000149011612
exact value:    0.100000001490116119384765625
rounding error: 1.4901161193847656e-9

У 0.1 нет точной двоичной формы, поэтому float32 хранит значение чуть больше 0.1.

Частые ошибки и устранение неполадок

Часто задаваемые вопросы

Почему 0.1 не хранится точно в IEEE 754?
0.1 — это периодическая дробь в двоичной системе, как 1/3 в десятичной, поэтому её нельзя записать конечным числом битов. Конвертер округляет её до ближайшего представимого значения и показывает остаточную ошибку округления.
В чём разница между 32- и 64-битными числами с плавающей точкой?
32-битное (одинарной точности / float) использует 8-битную экспоненту и 23-битную мантиссу, давая примерно 7 десятичных цифр точности. 64-битное (двойной точности) использует 11 и 52 бита — около 15–16 цифр. Переключите точность, чтобы сравнить одно число в обоих.
Как читать поля знака, экспоненты и мантиссы?
Первый бит — знак (0 — положительное, 1 — отрицательное). Следующие 8 или 11 битов — экспонента, хранимая со смещением 127 или 1023. Оставшиеся 23 или 52 бита — мантисса, дробная часть после неявной ведущей 1 для нормальных чисел.
Как кодируются Infinity, NaN и отрицательный ноль?
Экспонента из одних единиц с нулевой мантиссой — это ±Infinity; с ненулевой мантиссой — NaN. Отрицательный ноль — все нули, кроме знакового бита. Инструмент помечает каждый из этих особых случаев по мере ввода.
Можно ли преобразовать hex-значение float обратно в десятичное?
Да. Переключитесь на «IEEE 754 → Десятичное», выберите Hex или Binary и вставьте шаблон. Инструмент восстанавливает знак, экспоненту и мантиссу и показывает точное десятичное число, которое представляют биты.
Что такое субнормальное (денормализованное) число?
Когда поле экспоненты состоит из одних нулей, но мантисса — нет, число субнормальное: оно отбрасывает неявную ведущую 1, чтобы представлять значения меньше наименьшего нормального float, с пониженной точностью. Инструмент помечает их автоматически.

Связанные инструменты

Все инструменты ArrayKit