常见的浮点数类型是float,double,long float等。但是它与整数类型在内存储存不同。根据根据国际标准IEEE(电⽓和电⼦⼯程协会) 754,任意⼀个⼆进制浮点数V可以表⽰成下⾯的形式:
就拿10进制的7.0做例子,他可以写成2进制的111.0,转换为上的表达式为1.11*2的平方。2进制故名思意是逢2进1,意味着十进制的0.5在二进制中是写成0.1。因为小数点后的第一位的权重为2的负一次方。理解这点我们才能更加方便了解浮点数的在内存中的存储。
我们拿浮点数float为例子,float为会向内存中申请32个bit位的空间。最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M,如下图:

注意事项:
1.在储存中,m的值默认1<m<2,所以m的2进制值总可以写1.xxxx,所以规则中默认m的最前面的1省略。为了方便精度更加确切。
2.E在编译器中默认为无符号的整形(unsigned int),因为E是可能出现负数的,就有规定,存⼊内存时E的真实值必须再加上⼀个中间数,对于8位的E,这个中间数是127。
3.因为2进制的原因,计算无法做到准确的精确的表示一些数字,比如0.51,计算只能储存一个大概值。
842




被折叠的 条评论
为什么被折叠?



