码迷,mamicode.com
首页 > 其他好文 > 详细

浮点数在计算机中的存储

时间:2019-02-07 20:34:44      阅读:434      评论:0      收藏:0      [点我收藏+]

标签:bsp   基础   tab   enter   连续   超出   single   最小   次方   

一,基础预备知识

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
             

精度 sign exponent mantissa
single 1 8 23
double 1 11 52
long double 1 15 64

例如十进制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)

 

                  

浮点数在计算机中的存储

标签:bsp   基础   tab   enter   连续   超出   single   最小   次方   

原文地址:https://www.cnblogs.com/sooneven/p/10355266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!