IEEE 754 浮点转换器 (32 与 64 位)
转换
浮点数以符号位、带偏移的指数和尾数(fraction)存储,你键入的值与实际存储值之间的差异正是无数舍入错误的根源。本转换器以 float32(单精度,1+8+23 位,偏移 127)与 float64(双精度,1+11+52 位,偏移 1023)两者展示任意十进制数的精确 IEEE 754 表示:彩色位串、hex 字、去偏移指数与尾数、值类别(正规、非正规、零、无穷、NaN),以及舍入后实际存储的值。也可反向运行 — 粘贴 8 位或 16 位 hex 字,即可得到解码后的数字及其完整分解。适合调试序列化、着色器与嵌入式代码、GPU 缓冲区,以及「为何 0.1 + 0.2 != 0.3」之类的问题。可接受特殊输入 Infinity、-Infinity 与 NaN。全部在本地运行;不上传任何内容。
—
float32 (single)正规
00111101110011001100110011001101
0x3dcccccd
- 符号
- 0 (+)
- 指数
- 123 (2^-4)
- 有效数字
- 1.10011001100110011001101
- 存储值
- 0.10000000149011612
已舍入 — float32 无法精确存储此值。
float64 (double)正规
0011111110111001100110011001100110011001100110011001100110011010
0x3fb999999999999a
- 符号
- 0 (+)
- 指数
- 1019 (2^-4)
- 有效数字
- 1.1001100110011001100110011001100110011001100110011010
- 存储值
- 0.1
符号 指数 尾数
float32 = 1 符号 + 8 指数 + 23 尾数位;float64 = 1 + 11 + 52。指数偏移为 127 / 1023。
使用方法
- 保持「十进制 → 位」并键入数字(如 0.1、-3.14、1e10、Infinity、NaN)以查看 float32 与 float64。
- 阅读符号 / 指数 / 尾数的拆分、hex 字与存储值;当 float32 需要舍入时会有提示。
- 切换到「位 → 十进制」,选择精度,粘贴 hex 字将其解码回数字。
常见问题
- 为何存储值与我键入的不同?
- 多数十进制小数无法在二进制浮点中精确表示。工具显示最接近的可表示值 — 例如 float32 的 0.1 实际上是 0.100000001490116119384765625。当存储的 float32 值与你的输入不同时会出现舍入提示;float64 存储的就是 JavaScript 已在使用的值。
- 彩色位是什么意思?
- 红色是符号位(0 正、1 负),蓝色是指数(带偏移:float32 减 127、float64 减 1023 得到 2 的幂),绿色是尾数(fraction)。正规数的有效数字为 1.尾数;非正规数为 0.尾数,使用最小指数。
- 无穷、NaN 与零如何显示?
- 指数全为 1 且尾数为 0 是 ±无穷;指数全为 1 且尾数非零是 NaN;指数与尾数全为 0 是 ±零(注意 -0 有不同的符号位);指数全为 0 且尾数非零是非正规数。每张卡片都标注类别。
- 解码期望哪种 hex 格式?
- 原始位的大端 hex:float32 为 8 位十六进制(如 3f800000 = 1.0),float64 为 16 位(如 3ff0000000000000 = 1.0)。开头的 0x 与空格会被忽略,较短的输入会在左侧补零。
相关工具
BCD 转换器(二进制编码十进制)
十进制与 8421 二进制编码十进制互转 — 每位 4 比特半字节、压缩 BCD 十六进制字节、BCD 有效性校验。
转换00
格雷码转换器
在十进制、二进制和反射二进制格雷码之间双向转换,可选固定位宽并附 0-7 对照表。
转换00
二进制补码转换器 (8–64 位)
输入十进制、hex、二进制或八进制值,查看其 8/16/32/64 位二进制补码位模式,以及有符号/无符号读法、hex、八进制与反码 — 在浏览器内完成。
转换00
罗马数字转换器
在 1 到 3999 的阿拉伯数字与罗马数字之间互转。
转换00
进制转换器
在二进制、八进制、十进制和十六进制之间转换数字。
转换00
单位换算
换算长度、重量、温度、面积、体积、速度和时间。
转换00