标签:... 存储 计算机 二进制 double 浮点数 52 9.4 十进制
一,基础预备知识
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)
标签:...,存储,计算机,二进制,double,浮点数,52,9.4,十进制 来源: https://www.cnblogs.com/sooneven/p/10355266.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。