浮点数的存储和整型存储是不同的,因为他们的用途和精度不同。整数存储模式我就不过多赘述,接下来我们来讲讲浮点数存储,根据根据国际标准IEEE(电气和电子工程协会)754规定任意一个二进制浮点数V可以写成下面的表达式
V=(-1)^符号位*M*2^E
1. M>=1且<2之间的数;
2.E为指数;
举个例:-4.0写为二进制是-10.0,相当于-1.0*2^1那么E为1。
IEEE754规定:
1.对于32位浮点数,最高一位为符号位,接着8位为指数位E,最后23位为存储有限数字M;
2.对于64位浮点数,最高一位为符号位,接着11位位指数位E,最后53位存储有效数字M;
3.因为M为1.xxxx的数,这个数的第一位总是为1,因此可以被舍弃,只保留后面的小数部分,当再次读取的时候,再把1加上,这样会出现64位浮点数存储时,M存储53位有效位数,因为舍去默认数1,可以再存一位有效数字,但总的M还是有52位数;
4.E(无符号整数)比较复杂,E为8位取值范围为0~255;E为11位,取值范围为0~2047但E可为负数,IEEE754规定E存入内存时必须加上一个中间数,8位E中间数位127,11位E中间数为1023,例如:E=2,存入内存是2+127=129,以二进制存入。浮点数的取分为下列几种情况:
- E二进制全为1时,表示无穷大;
- E二进制全为0时,将其真实值设为1-中间数,有效数字不在补1,保持0.xxxxx,可以表示 接近0的小数和配合符号位后表示正负0;
- E二进制不全为0或不全为1时,用E的计算值减去127或1023,得到有效值,再将M值加上 第一位的1,就可以得到整个浮点数。
(小白说浮点数存储,如有错,请指出,感谢纠正!)