根据 IEEE 754 标准,浮点数以以下形式表示:
V=(-1)^S * M * 2^E
其中S是符号位,M是尾数位,E是指数位。
以5.5举例
转化位二进制表示:
101.1
整数部分5用二进制表示是101。小数部分从第一位开始依次为2^-1, 2^-2,2^-3,2^-4……,因此小数部分也是1,组合起来是101.1。因此可看出在某些情况下,小数部分无法精准表示,只能无限接近。
用科学计数法表示:
1.011*2^2
将二进制数转化为1.xx*2^E方形式,此时已经转化为了V=(-1)^S * M * 2^e的形式。规定M是一个大于1小于2的数,因此小数点可能前移也可能后移,所以e可能是正数也可能是负数。为了更易于计算,我们为e加上一个偏移量调整为无符号数。单精度浮点数和双精度浮点数中,E分别占8和11个比特位,因此E=e+127或者E=e+1023。
因此可得:
单精度浮点数(4Byte 32bit) | |||||||||||||||||||||||||||||||
S | E(8bit) | M(23bit) |
双精度浮点数(8Byte 64bit) | ||||||||||||||||||||||||||||||||
... | ||||||||||||||||||||||||||||||||
S | E(11bit) | M(52bit) |