浮点数在计算机中的存储

一,基础预备知识

1,十进制转换为二进制

 

1.1 整数部分:

连续,除以2,取余数,余数为0或1,53 / 2 = 26R1    26 / 2 = 13R0    13 / 2 = 6R1    6 / 2 = 3 R0   3 / 2  = 1 R1    1/2 = 0R1 ,对应二进制为110101(从右往左)

 

1.2 小数部分:

 连续乘以2,大于1取1,如0.7转换成二进制为:0.7*2 = .4 + 1   0.4*2 = 0.8 + 0   0.8*2 = 0.6 + 1   0.6*2 = 0.2 +1   0.2*2 = 0.4 + 0(进入循 环),对应二进制为10110....(从左往右) 所以十进制53.7转换二进制为:110101.10110(0110循环)

 

2,二进制转换成十进制:

2.1 对应位数次方,分数位为负数次方

 

二,IEEE标准

1,浮点数格式:包含三个部分,符号位(+或者是-),指数位,尾数,格式为+1.bbbb...b*2^p
             

精度signexponentmantissa
single1823
double11152
long double11564

例如十进制9,二进制为1001,存储方式为+1.001*2^3

 

2,对double的讨论

2.1   double精度1,二进制为+1.000...00(52个0)*2^0,下一个比1大的数为+1.000...01*2^0,十进制为1+2^(-52)

益普希龙mach为1与比1大的最小浮点数的差值,为2^(-52),9.4---1001.0110----double格式为+1.0010110...1100*2^3

    

2.1   当尾数超出52位时需要舍去余下部分,分为两种:chopping与rounding,其中chopping简单就是把超出52位的扔掉(不好)

 

2.2   rounding:类似于十进制的四舍五入,rounding分为两种情况,当52为以后为:(52位)100....(全为0),进位和舍去取决于哪种使得52为0

其余情况为53为1就进位,为0就舍去

 

2.3 十进制9.4在双精度表示下的误差:9.4---1.110.....1100|110...舍去部分为: .1100*2^(-52)*2^3---十进制为.4*2^(-48),应为53位为1,所以要进一位,增加2^(-52)*2^3---十进制为2^(-49)

所以最后结果为fl(9.4) = 9.4 + 2^(-49) -0.4*2^(-48) = 9.4 + 0.2*2^(-49),误差为0.2*2^(-49)(rounding error)

 

                  

转载于:https://www.cnblogs.com/sooneven/p/10355266.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值