通过MCP连接 →

输入计算

输入 8 位十六进制数字(例如 40490FDB 即为圆周率 π)。"0x" 前缀可加可不加。

数学公式

广告

结果

十进制数值
3.1415927410125732
IEEE 754 单精度(32 位)
符号位 0 (positive)
存储指数 128
去偏指数 1
尾数(原始位) 4,788,187
尾数小数值 0.5707963705062866

什么是 IEEE 754 浮点数转换器?

这个工具可以把一个 32 位十六进制数,按照 IEEE 754 单精度标准还原成它所代表的实际数值——这正是 C、Java 以及绝大多数现代硬件中 float 类型所采用的格式。只要输入 8 位十六进制数字,转换器就会将其拆分成构成浮点数的三个字段:1 位符号位、8 位指数位和 23 位尾数(小数部分),再重新组合成一个十进制数值。

使用方法

把这个 32 位数值以十六进制形式输入(例如 40490FDB)。"0x" 前缀可加可不加,非十六进制字符会被自动忽略。不足 8 位的输入会在左侧补零。结果会显示十进制数值,以及解析出的符号位、存储指数、去偏指数和尾数,方便你自行核对每一位的排布。

计算公式详解

对于规格化(normal)数值,计算公式为 $$\text{Value} = (-1)^{s} \times \left(1 + \frac{m}{2^{23}}\right) \times 2^{(e - 127)}$$ 其中 127 是单精度的指数偏移量(bias)。式中的"1 +"代表规格化二进制数始终隐含的那一位前导 1。当存储指数 e 为 0 时,该数为次规格化(subnormal)数:此时隐含的前导 1 消失,指数被固定为 -126。当 e 为 255 时,数值为无穷大(尾数为 0)或 NaN(非数)。

32 位 IEEE 754 单精度布局,分为符号、指数和尾数字段
32 位分为 1 个符号位、8 个指数位和 23 个尾数位。

实例演算

40490FDB 为例。其二进制中符号位为 0(正数),指数字段为 10000000 = 128,因此去偏指数为 \(128 - 127 = 1\)。尾数位对应的整数值为 4788187,得到小数部分 \(4788187/8388608 \approx 0.5707964\)。于是数值为 $$(1 + 0.5707964) \times 2^{1} \approx 3.14159274$$ 这正是 π 在单精度下最接近的近似值。

展示 IEEE 754 公式将符号、指数和尾数组合成数值的示意图
各字段代入公式以还原十进制数值。

常见问题

为什么结果和我预期的数字不完全一样? 单精度只有大约 7 位十进制有效数字,因此许多十进制数值会被舍入到最接近的可表示浮点数。

双精度(64 位)怎么处理? 本工具针对的是 32 位单精度。双精度使用 11 位指数、52 位尾数,偏移量为 1023。

7FC00000 会得到什么? 那是一个 NaN(指数全为 1,尾数非零),并不是一个有限数。

最后更新: