浮点数在计算机中的存储方式

浮点数基础知识

浮点标准用 V = (-1)s * M * 2E
s:符号位决定这是一个正数还是一个负数,当s为0时为正数,1时为负数
M :尾数(有效数字位),该值是一个二进制小数,它的范围为(大于1,小于2)
E:指数位,又称阶码位,作用是对浮点数加权
   在32位系统中 : 符号位(s)占最高位,之后8位为指数位(e),最后23位为尾数位(m)。
   在64位系统中 : 符号位(s)占最高位,之后11位为指数位(e),最后52位为尾数位(m)。
 
    
 如:125.125
    125 = 1111101
    0.125 = 0.001(2^-3)
125.125 用二进制表示:1.111101001 2^6
    
    所以: s = 0
          m = 111101001 (因为尾数部分在用二进制表示时,总是有规则  1 <= m < 2,计算机在储存时会隐藏小数点前的 ‘1’,也就是第一个‘1’,原本 m = 1.111101001;计算机存储时只存储小数点后的内容:m 111101001。因此,有效位共有23个bit位可以用,其实起到了24个bit的作用)
        E = 127 +6 = 133 = 1000 0101(规定在原有基础上需要加上偏移值(32位中加127,64位加1023)以表示指数的正负)
0(s)    1000 0101(e)      11110100100000000000000(m) 一共32位
 
    

计算机存储浮点数的精度缺失问题

由于储存机制的限制,计算机中的浮点数并不能把实际的小数表示完全。在此基础上只能表示有限的有理数。
比如:
0 11111101 00000000000000000000001
0 11111101 0000000000000000000000
上述两个在计算机中存储的连续浮点数,两个数的差值却高达1.014 * 10的31次方。中间很多数无法表示。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值