浮点数的二进制表示采用 科学计数法形式,由符号位、指数位和尾数位组成。具体规则如下:
一、整体结构
符号位(1位) 用0表示正数,1表示负数。
指数位
- 对于双精度浮点数(64位),指数占11位,采用 偏移表示法(实际存储值为指数+127)。
- 对于单精度浮点数(32位),指数占8位,范围为-126到127。
尾数位
- 占剩余位数,双精度为52位,单精度为23位。
二、表示示例
以 双精度浮点数38414.4为例:
转换为科学计数法
- 整数部分:38414 = 1.0010110000011100110011001100110011001100110011001100₂(共53位)
- 尾数部分:0.4 = 0.5×0 + 0.25×1 + 0.125×1 + …(无限循环,实际存储52位有效数字)。
二进制表示
- 符号位:0(正数)
- 指数位:111010(十进制126,偏移后为-5)
- 尾数位:1001011000001110(共52位)
- 最终二进制:`1001011000001110.0110011001100110011001100110011001100`(小数点位置由尾数位数决定)。
三、注意事项
精度问题
- 尾数采用 隐藏位技术,最高位的1不存储(实际保留52位有效数字)。
- 例如0.1在二进制中无法精确表示,需通过截断或舍入处理。
标准规范
- C/C++等编程语言遵循 IEEE 754标准,确保跨平台兼容性。
四、补充说明
单精度与双精度: float(32位)与double(64位)的区别主要体现在尾数位数(23位 vs 52位)和指数范围。 移码表示
通过上述结构,浮点数能够高效地表示大范围数值,但需注意精度损失问题。