Что такое конвертер IEEE 754?
Этот инструмент расшифровывает 32-битное шестнадцатеричное значение и показывает, какое реальное число оно представляет по стандарту IEEE 754 одинарной точности — именно этот формат используется типом float в C, Java и почти во всём современном оборудовании. Введите восемь шестнадцатеричных цифр, и калькулятор разложит их на три поля, из которых состоит число float: 1 бит знака, 8 бит экспоненты и 23 бита мантиссы (дробной части), а затем соберёт из них десятичное значение.
Как пользоваться
Введите 32-битное значение в шестнадцатеричном виде (например, 40490FDB). Префикс «0x» указывать не обязательно, а любые символы, не являющиеся шестнадцатеричными цифрами, игнорируются. Если цифр меньше восьми, слева добавляются нули. В результате вы увидите десятичное значение, а также расшифровку знака, сохранённой экспоненты, несмещённой экспоненты и мантиссы — так вы сможете самостоятельно проверить, как устроены биты.
Разбор формулы
Для нормализованных чисел значение вычисляется так: $$\text{Value} = (-1)^{s} \times \left(1 + \frac{m}{2^{23}}\right) \times 2^{(e - 127)}$$ Число 127 — это смещение экспоненты для одинарной точности. Слагаемое «1 +» отражает неявный старший бит, который всегда присутствует у нормализованных двоичных чисел. Когда сохранённая экспонента e равна 0, число является денормализованным: неявная единица исчезает, а экспонента фиксируется на значении -126. Когда e равно 255, значение — это бесконечность (мантисса равна 0) или NaN.
Пример с разбором
Возьмём 40490FDB. В двоичном виде бит знака равен 0 (положительное число), поле экспоненты 10000000 = 128, поэтому несмещённая экспонента равна \(128 - 127 = 1\). Биты мантиссы равны 4788187, что даёт дробь \(4788187/8388608 \approx 0{,}5707964\). Итоговое значение: $$(1 + 0{,}5707964) \times 2^{1} \approx 3{,}14159274$$ — это ближайшее приближение числа π в одинарной точности.
Частые вопросы
Почему результат не совпадает в точности с ожидаемым числом? Одинарная точность хранит лишь около 7 десятичных значащих цифр, поэтому многие десятичные значения округляются до ближайшего представимого числа float.
А как насчёт двойной точности (64 бита)? Этот инструмент работает с 32-битной одинарной точностью. В числах двойной точности (double) используется 11 бит экспоненты, 52-битная мантисса и смещение 1023.
Что даёт значение 7FC00000? Это NaN (все биты экспоненты — единицы, мантисса ненулевая), то есть не конечное число.