浮点数的存储方式
作者:互联网
格式为:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
- S表示浮点数正负
- E指数加上127后的值得二进制数据
- M底数
举例:
17.625在内存中的存储
首先要把17.625换算成二进制:10001.101。
整数部分,除以2,直到商为0,余数反转。
小数部分,乘以2,直到乘位0,进位顺序取。
将10001.101右移,直到小数点前只剩1位:1.0001101 * 2^4 因为右移动了四位。
底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101。
指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011。
符号部分是正数,所以是0。
综上所述,17.625在内存中的存储格式是:01000001 10001101 00000000 00000000
常见问题(数据类型硬转换导致的失真):
如果不将一个浮点数做(int)转换(软转换)就直接将其以%d格式printf的话,会导致输出结果恒为0(截断效应)
标签:存储,方式,浮点数,底数,小数点,MMMM,17.625,127 来源: https://www.cnblogs.com/Eusionblogs/p/14727582.html