浮点数在内存中的存储

本文介绍了整数在内存中的存储原理后,详细解析了浮点数按照IEEE754标准的单精度和双精度存储方式,包括符号位、指数和有效数字的结构。
摘要由CSDN通过智能技术生成

在了解浮点数在内存中的存储之前,我们先了解一下整数在内存中的存储。

整数就是直接以二进制的形式存储且存的都是补码,其有正负数之分,整数的原码、反码、补码相同,负数则是原码按位取反得反码,反码+1=补码,如果是负数,其最高位为1(其从原码到补码得过程中符号位不参与运算),如果是正数,最高位为0。如2在内存中就是00000000000000000000000000000010,-2就是原码就是10000000000000000000000000000010,反码就是11111111111111111111111111111101,补码就是11111111111111111111111111111110。整数如此,那么浮点数呢?我们可以通过代码进行验证。

很显然,其与我们得猜测并不同,因此,我们推测浮点数在内存中的存储与整形的不同。通过查阅资料我们可知,浮点数在内存中的存储是根据 IEEE 754标准来规定的。

第二段中说其规定了四种浮点数的存储方式,这里我们只讨论前两种(单精度和双精度)。

根据标准规定,任何一个浮点数都可以表示为这样的形式:

            ​​​​​​​        

对于32位的单精度浮点数,最高的一位为符号位S,接着8位是指数E,剩下的23位是有效数字M。

对于64位的双精度浮点数,最高的一位为S,接着11位是指数E,剩下的52位是有效数字M。

指数E:E为无符号数,E为8位(取值范围为0~255),如果为11位(取值范围为0~2047)。因为科学技术法中的E是可以出现负数的,因此在存入内存中时,E的真实值必须加上一个中间数,对于8位的E中间数为127,对于11位的,中间数为1023。

有效位M:因1<=M<2,也就是说M为1.xxxxxx的形式,其中xxxxx为小数部分,因为M第一位总为1,因此可以舍去,等读取时,再把第一位加上去,目的是节省1位有效数字。

如图所示,浮点数在内存中的存储便是如此。

最后,我们就来分析最开始的题目。

到此,我们对浮点数在内存中的存储有了一定的了解。

  • 22
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值