将浮点数的二进制表示转整数的二进制表示.docVIP

将浮点数的二进制表示转整数的二进制表示.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
将浮点数的二进制表示转整数的二进制表示 ??? 之前我的一篇文章 《将整数的二进制表示转浮点数的二进制表示》?介绍了如何表示一个IEEE标准规格化浮点数,说实话,文章写的很烂,以至有网友看不明白,于是有提问如下: 比如:53004d3e 二进制表示为: 01010011000000000100110100111110 按照1个符号,8个指数,23个小数位划分 000000000100110100111110 小数位就不对了??? 正确的结果转出来应该是551051722752.0 不知道该怎么算? 好,我们根据IEEE的浮点数表示规则划分,得到这个浮点数的小数位是: 00000000100110100111110 那么它的二进制表示就应该是: 1.000000001001101001111102 × 239 这是怎么来的呢??别急,听我慢慢道来。 标准化公式中的M要求在规格化的情况下,取值范围1M(2-ε) 正因为如此,我们才需要对原始的整数二进制表示做偏移,偏移多少呢?偏移2E。 这个“E”怎么算?上面的239怎么得来的呢?浮点数表示中的8位指数为就是告诉这个的。我们知道: E = e-Bias 那么根据指数位: 101001102=16610 即e=166,由此算出E=e-Bias=166-127=39,就是说将整数二进制表示转为标准的浮点数二进制表示的时候需要将小数点左移39位,好,我们现在把它还原得到整数的二进制表示: 1 00000000100110100111110 0000000000000000 1│←───── 23─────→│←─── 16───→│ 23+16=39,后面接着就是小数点了。 拿出计算器,输入二进制数1000000001001101001111100000000000000000 转为十进制数,不正是: 551051722752 么:) 通过这个例子,我介绍了将整数二进制表示转浮点数二进制表示的逆过程,还是希望大家不但能掌握转化的方法,更要理解转化的基本原理。 顺便补充一下,IEEE对双精度浮点数(C语言中的double)规定的保存格式是1个符号位,11个指数位,52个小数位,长度为64bit,转换的方法与单精度浮点数是一样的,关于这点网上的文章很少提到故特此补充一下,相信通过两篇文章的介绍读者能掌握如何转换。

文档评论(0)

yurixiang1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档