Конвертер чисел с плавающей точкой 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 и денормализованные числа. Каждое преобразование выполняется локально в вашем браузере; числа, которые вы вводите, никогда не покидают ваше устройство.
Возможности
- Преобразуйте любое десятичное число в 32-битный (одинарной) и 64-битный (двойной точности) IEEE 754
- Цветные битовые поля знака, экспоненты и мантиссы
- Показывает hex-слово рядом с полной двоичной битовой строкой
- Сообщает точное хранимое значение и ошибку округления относительно вашего ввода
- Обратный режим декодирует hex-шаблон или битовую строку обратно в десятичное число
- Обрабатывает Infinity, NaN, отрицательный ноль и субнормальные (денормализованные) числа
- Показывает смещённую и несмещённую экспоненту, чтобы вы видели масштаб
- Работает целиком в вашем браузере — числа никогда не покидают ваше устройство
Как использовать Конвертер IEEE 754
- Оставьте выбранным «Десятичное → IEEE 754» и введите число, например 0.1
- Выберите 32 или 64 бита, чтобы увидеть биты одинарной или двойной точности
- Прочитайте поля знака, экспоненты и мантиссы, hex и ошибку округления
- Переключитесь на «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.
Частые ошибки и устранение неполадок
- Два числа, которые должны быть равны, в коде сравниваются как разные. — Округление различается по операциям, поэтому сравнивайте числа с плавающей точкой с малым допуском (epsilon) вместо ==, либо переходите на 64 бита для большей точности.
- Вставленное hex-значение неожиданно декодируется в Infinity или NaN. — Поле экспоненты из одних единиц означает Infinity (нулевая мантисса) или NaN (ненулевая мантисса). Проверьте и разрядность — 8 hex-цифр для 32 бит, 16 для 64 бит.
- 0.1 + 0.2 не равно 0.3 в вашей программе. — Каждое значение сначала округляется до ближайшего двоичного float, поэтому суммы расходятся. Преобразуйте здесь 0.1, 0.2 и 0.3, чтобы увидеть точные хранимые значения за этим расхождением.
- Очень маленькое число помечено как «субнормальное». — Ниже наименьшей нормальной экспоненты числа с плавающей точкой отбрасывают неявную ведущую 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