IEEE 754标准制定了32位单精度浮点数和64位双精度浮点数格式,目前几乎所有计算机都采用IEEE 754标准来表示浮点数。
IEEE 754 标准下的浮点格式为:符号(最高位)
指数
有效数字
- 单精度 1 符号位, 8位指数, 23位有效数字, 共32位数字
- 双精度 1 符号位, 11位指数, 52位有效数字, 共64位数字
其中:
- 符号位1表示负数, 0表示正数
- 指数位也被称为阶码, 恒为整数,使用偏移码表示
浮点阶码:
IEEE 754标准中的指数也被称为阶码,采用移码表示,移码与补码相似仅符号位相异(补码1为负号,移码1为正号)
移码格式:1位符号位 其余为 真值+\(2^{N-1}\), 其中N表示位数
例:
# 8位编码下的127,偏移码为127+127=0111 1111B+0111 1111B=1111 1110B
# 8位编码下的-10,偏移码为-10+127=111 0101B
# 单精度浮点数据为8位, 双精度为11位
有效数字
以100.25位例
# 整数部分直接转化成2进制
# 100=110 0100B
# 小数部分采用除2取整法(0.25x2=0.5取0,0.5x2=1取1,除到没有小数即可,结果为01)
# 0.25=01
# 科学计数法
# 100.25 = 110 0100.01B = 1.1001 0001B x 2^6
# 舍弃整数部分的1
# 结果为 1001 0001
【例子】把100.25转化成浮点数据格式
- 100.25=0110 0100.01B=1.1001 0001Bx2^6 于是得出符号位为0
- 指数部分为6, 所以8位的阶码为6+127=133=1000 0101
- 有效数字部分为 1001 0001 0000 0000 0000 000
- 组合在一起: 0 10000101 1001 0001 0000 0000 0000 000 B = 0x 42C88000