引用一篇博文
http://blog.csdn.net/chenyujing1234/article/details/7683635
此文章详细介绍了浮点数在内存中的表示
对于0.45, 乘2得到0.9,则二进制的十分为0, 再用0.9乘2,得到1.8,则2进制的百分位为1,此时用1.8的小树部分即0.8乘2,得到1.6,则2进制的百分位为1,依次下去得到 .01110011001100......其中,1100无限循环
则123.45的2进制表示为 1111011.01110011001100...... 由于出现了循环,则难免会有精度的损失,此处就将其精确到1111011.01110011001100
接下来讨论浮点数在内存中的存储
任何类型的数据在内存中都是按2进制进行存储,浮点数也不例外。
对于整数,其在内存中的表示方法按其补码进行存储,而对于浮点数
单精度float型存储在内存中的大小为4个字节,即32位。
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
float的二进制可分成三部分:
http://blog.csdn.net/chenyujing1234/article/details/7683635
此文章详细介绍了浮点数在内存中的表示
首先说一下浮点数的进制转换
10进制整形转换为2进制自然不必多说,对于浮点数转换为2进制,是将其整数部分和小数部分分别进行转换实现的
例如 123.45, 整数部分123,转换为2进制为 1111011, 小数部分依次乘二得到的数的整数部分为十分为,取乘积的小数部分再乘二,得到的整数部分为百分位,依次直至为0或循环对于0.45, 乘2得到0.9,则二进制的十分为0, 再用0.9乘2,得到1.8,则2进制的百分位为1,此时用1.8的小树部分即0.8乘2,得到1.6,则2进制的百分位为1,依次下去得到 .01110011001100......其中,1100无限循环
则123.45的2进制表示为 1111011.01110011001100...... 由于出现了循环,则难免会有精度的损失,此处就将其精确到1111011.01110011001100
接下来讨论浮点数在内存中的存储
任何类型的数据在内存中都是按2进制进行存储,浮点数也不例外。
对于整数,其在内存中的表示方法按其补码进行存储,而对于浮点数
单精度float型存储在内存中的大小为4个字节,即32位。
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
float的二进制可分成三部分: