关于浮点型数据float与double在内存的存储方式

众所周知我们的整型在内存中是以补码的方式小端存储的。那么我们的浮点型的float与double又是如何存储的呢?

首先float数据占用32bit,double数据占用64bit。
不论是float还是double都遵循的是IEEE规范。
同样,他们的存储也都分为三个部分(如下图),只不过float是32位,而double是64位;
在这里插入图片描述
在这里插入图片描述

首先高位是符号位不用解释。后面还有指数位尾数位。指数位和尾数位所占的大小是约定而成的,对于32位浮点数约定其中8位保存指数,这样能挤出23位保存尾数,在数值范围和数值精度之间尽量取得一个平衡。64位浮点数的指数部分就会扩展到11位了。

double与float的存储大同小异,不同的是指数部分和尾数部分的位数。所以这里不再详细的介绍double的存储方式了

我们以11.25为例,它的二进制表示为1011.01(转换方法:整数位除基取余,小数位乘基取整)。我们可以用科学计数法将其表示为1.01101* 2^3,于是我们得到了它的指数3,因为二进制的任何一个科学记数法都可以表示为 1.xxxx* 2^x,第一位都是1,所以我们完全不需要再表示它,将其省略(所以我们23bit的尾数部分可以表示精度为24bit的数据),取小数点后面的数字为尾数。。然后我们的指数部分采用移位存储(关于移位存储详见:原文地址:http://www.francesyang.com/archives/2017/07/16/99 转载请注明)

   		得到**11.25的存储方式如图**

在这里插入图片描述
至此, 这就是浮点型数据的存储方式了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值