- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
定点数和浮点数区别
定点数与浮点数区别
最近做HDR时,经常要用NV提供的16位纹理,它的说明书16位能达到24位的精度,就很奇怪?一直搞不懂浮点数的精度怎么算的?
今天认真看了一下IEEE float point的标准,终于明白是什么了
1.什么是浮点数
在计算机系统的发展过程中,曾经提出过多种方法表达实数。典型的比如相对于浮点数的定点数(Fixed Point Number)。在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置。货币的表达就可以使用这种方式,比如99.00或者00.99可以用于表达具有四位精度(Precision),小数点后有两位的货币值。由于小数点位置固定,所以可以直接用四位数值来表达相应的数值。SQL中的NUMBER数据类型就是利用定点数来定义的。还有一种提议的表达方式为有理数表达方式,即用两个整数的比值来表达实数。
定点数表达法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数。最终,绝大多数现代的计算机系统采纳了所谓的浮点数表达方式。这种表达方式利用科学计数法来表达实数,即用一个尾数(Mantissa),一个基数(Base),一个指数(Exponent)以及一个表示正负的符号来表达实数。比如123.45用十进制科学计数法可以表达为1.2345×102,其中1.2345为尾数,10为基数,2为指数。浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。
提示:尾数有时也称为有效数字(Significand)。尾数实际上是有效数字的非正式说法。
同样的数值可以有多种浮点数表达方式,比如上面例子中的123.45可以表达为12.345×101,0.12345×103或者1.2345×102。因为这种多样性,有必要对其加以规范化以达到统一表达的目标。规范的(Normalized)浮点数表达方式具有如下形式:
±d.dd.d×βe,(0≤d iβ)
其中d.dd.d即尾数,β为基数,e为指数。尾数中数字的个数称为精度,在本文中用p来表示。每个数字d介于0和基数之间,包括0。小数点左侧的数字不为0。
基于规范表达的浮点数对应的具体值可由下面的表达式计算而得:
±(d 0+d 1β-1+.+d p-1β-(p-1))βe,(0≤d iβ)
对于十进制的浮点数,即基数β等于10的浮点数而言,上面的表达式非常容易理解,也很直白。计算机内部的数值表达是基于二进制的。从上面的表达式,我们可以知道,二进制数同样可以有小数点,也同样具有类似于十进制的表达方式。只是此时β等于2,而每个数字d只能在0和1之间取值。比如二进制数1001.101相当于1×2 3+0×22+0×21+1×20+1×2-1+0×2-2+1×2-3,对应于十进制的9.625。其规范浮点数表达为1.001101×23。
2.IEEE浮点数
计算机中是用有限的连续字节保存浮点数的。保存这些浮点数当然必须有特定的格式,Java平台上的浮点数类型float和double采纳了IEEE 754标准中所定义的单精度32位浮点数和双精度64位浮点数的格式。
注意:Java平台还支持该标准定义的两种扩展格式,即float-extended-exponent和double-extended-exponent扩展格式。这里将不作介绍,有兴趣的读者可以参考相应的参考资料。
在IEEE标准中,浮点数是将特定长度的连续字节的所有二进制位分割为特定宽度的符号域,指数域和尾数域三个域,其中保存的值分别用于表示给定二进制浮点数中的符号,指数和尾数。这样,通过尾数和可以调节的指数(所以称为浮点)就可以表达给定的数值了。具体的格式参见下面的图例:
在上面的图例中,第一个域为符号域。其中0表示数值为正数,而1则表示负数。
第二个域为指数域,对应于我们之前介绍的二进制科学计数法中的指数部分。其中单精度数为8位,双精度数为11位。以单精度数为例,8位的指数为可以表达0到255之间的255个指数值。但是,指数可以为正数,也可以为负数。为了处理负指数的情况,实际的指数值按要求需要加上一个偏差(Bias)值作为保存在指数域中的值,单精度数的偏差值为127,而双精度数的偏差值为1023。比如,单精度的实际指数值0在指数域中将保存为127;而保存在指数域中的64则表示实际的指数值-63。偏差的引入使得对于单精度数,实际可以表达的指数值的范围就变成-127到128之间(包含两端)。我们不久还将看到,实际的指数值-127(保存为全0)以及+128(保存为全1)保留用作特殊值的处理。这样,实际可以表达的有效指数范围就在-127和127之间。在本文中,最小指数和最大指数分别用emin和emax来表达。
图例中的第三个域为尾数域,其中单精度数为
您可能关注的文档
最近下载
- 民宿全年营销方案(3篇).docx VIP
- 一种溴代三苯甲基四氮唑联苯中二溴海因的检测方法.pdf VIP
- 压力管道设计与审批人员考试题电子版---5.docx VIP
- 新22S6 消防工程建筑工程图集.docx VIP
- 食品制造企业安全风险分级管控和隐患排查治理双体系方案全套资料.docx VIP
- 车间净化工程设计方案.docx VIP
- DLT 664-2016 带电设备红外诊断应用规范.pdf VIP
- 畜牧兽医法律法规和职业道德(第二版)项目1-6教材配套课件完整版电子教案.pptx VIP
- 故唐律疏议(卷1-30),长孙无忌 等撰-11.pdf VIP
- GBT 6009-2014 工业无水硫酸钠.pdf
原创力文档


文档评论(0)