浮点数的存储解析(超详细)

本文详细介绍了浮点数的类型(float、double、longdouble)、表示规定(遵循IEEE754标准),以及浮点数在内存中的存储方式,包括有效数字、指数的存储策略,以及浮点数取出时的处理方法。
摘要由CSDN通过智能技术生成

目录

1.浮点数

    1.1 类型:float、double、long double

    1.2 常见的浮点数:3.1415926、1E10(科学计数法)

    1.3 浮点数的范围:在float.h中定义,可自行查看

2.浮点数的表示规定

3.浮点数的存储和取出

    3.1浮点数的存储

    3.2浮点数的取出


1.浮点数

    1.1 类型:float、double、long double
    1.2 常见的浮点数:3.1415926、1E10(科学计数法)
    1.3 浮点数的范围:在float.h中定义,可自行查看

2.浮点数的表示规定

    国际标准IEEE(电气和电子工程协会)754,任意一个二进制的浮点数V可以表示为下面的形          式:V = (-1)^S * M * 2^E

  •     S为0表示正数,为1表示负数
  •     M表示是有效数字,M大于等于1小于2
  •     E表示指数

    例如:5.5的二进制表示为101.1,用科学技术法表示即为5.5 = 1.01*2^2(指数E就是小数点向右移动的位数),那么S = 0,M = 1.01,E = 2。 

    这样表示之后,我们就可以知道浮点数的存储应当包含S、M、E这三个部分。接下来我们就来看看浮点数是如何在计算机中存储的。


3.浮点数的存储和取出

    3.1浮点数的存储
  •     IEEE754规定,浮点数在内存中的存储方式如下

    

  •     通过上图我们知道,float有23个bit位来存储有效位数,double有52个bit位来存储有效位数,因而有效数字有限精度也就有限,为了尽量提高精度IEEE754规定只把M的小数部分存入,因为科学计数法下M的整数部分只能为1,存入时只存小数部分而读取数据时则将1加上即可,从而多出一位提高精度。
  •     而对于指数E不能直接存入对应位置,因为IEEE754规定存E的部分只能存入正数,即没有符号位,但是实际情况下是存在E为负数的情况的,那么这时IEEE754就规定将E加上一个中值在转化为二进制进行存储,例如:float的存放E的8个bit位,能存0~255范围的数,中值就是127;double的存放E的11个bit位,能存0~2047范围的数,中值就是1023。

    我们来举个例子的尝试存储,如5.5

    


   3.2浮点数的取出

        浮点数的取出S和M就是按原还原,而E的存放样式不同要分三种情况:

  •    E的存放不全为1且不全为0:二进制转换为十进制之后,减去中值就得到指数E。
  •    E的存放全为0:存放全为0说明E的值小于等于-127,那么表示的浮点数已经很小很小了,接近于0,故而用来表示+0或-0。
  •    E的存放全为1:说明E大于等于128,同全为0的推测,这种情况就表示+∞或-∞,在输出显示器上为+inf或-inf来表示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值