我们期望浮点数也可以像定点数(整数)一样在计算机中以二进制方式存储,但是计算机不能识别小数点,于是一种新的存储方式产生了,即IEEE754浮点表示。
下面以单精度浮点数(float)为例描述下浮点数二进制表示方法。
float占4个字节(32bit),每一bit的作用域如下:
sign占1bit,表示正负号(0为正,1为负)。
exponent占8bit,表示指数。(127表示指数为0,如果指数为正,则exponent表示为127+E,如果指数为负,则exponent表示为127-E(指数位))
fraction占23bit,表示小数有效位。(这里会减去整数位1(取值时加上1),只填充小数位部分,没有填充满的位补0)
综上,一个单精度浮点数所代表的数值为:
补充:
当exponent全为0时,浮点数的指数E等于1-127,有效数字fraction不再加上第一位的1,而是还原为0.xxxxxx的小数。这样做是为了表示±0,以及接近于0的很小的数字。
当exponent全为1时,如果小数位fraction全为0,表示±无穷大(正负取决于符号位sign);如果小数位fraction不全为0,表示这个数不是一个数(NaN)。
举例(