IEEE754浮点表示方法.docVIP

  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文档。上传文档
查看更多
IEEE754浮点表示方法.doc

前一节中谈到的定点表示法不能很有效地表示非常大的数字。例如,表达式5 × 2100是用101后面跟随100个零组成的位模式来表示。相反地,我们希望通过给定x和y的值,来表示形如x × 2y的数。 IEEE浮点标准用V = (-1)s × M × 2E的形式来表示一个数: 符号(sign) s决定这个数是负数(s=1)还是正数(s=0),而对于数值0的符号位解释作为特殊情况处理。 尾数(signi?cand) M是一个二进制小数,它的范围是1~2-ε,或者是0~1-ε。 阶码(exponent) E的作用是对浮点数加权,这个权重是2的E次幂(可能是负数)。 将浮点数的位表示划分为三个字段,分别对这些值进行编码: 一个单独的符号位s直接编码符号s。 k位的阶码字段exp = ek-1…e1e0编码阶码E。 n位小数字段frac = fn-1…f1 f0编码尾数M,但是编码出来的值也依赖于阶码字段的值是否等于0。 图2-31给出了将这三个字段装进字中两种最常见的格式。在单精度浮点格式(C语言中的?oat)中,s、exp和frac字段分别为1位、k = 8位和n = 23位,得到一个32位的表示。在双精度浮点格式(C语言中的double)中,s、exp和frac字段分别为1位、k = 11位和n = 52位,得到一个64位的表示。 ? 情况1:规格化的值 这是最普遍的情况。当exp的位模式既不全为0(数值0),也不全为1(单精度数值为255,双精度数值为2047)时,都属于这类情况。在这种情况中,阶码字段被解释为以偏置(biased)形式表示的有符号整数。也就是说,阶码的值是E = e-Bias,其中e是无符号数,其位表示为ek-1…e1e0,而Bias是一个等于2k-1-1(单精度是127,双精度是1023)的偏置值。由此产生指数的取值范围,对于单精度是-126~+127,而对于双精度是-1022~+1023。 对小数字段frac的解释为描述小数值f,其中0≤ f 1,其二进制表示为0.fn-1…f1 f0,也就是二进制小数点在最高有效位的左边。尾数定义为M = 1 + f。有时,这种方式也叫做隐含的以1开头的(implied leading 1)表示,因为我们可以把M看成一个二进制表达式为1.fn-1 fn-2…f0的数字。既然我们总是能够调整阶码E,使得尾数M在范围1 ≤ M 2之中(假设没有溢出),那么这种表示方法是一种轻松获得一个额外精度位的技巧。由于第一位总是等于1,因此我们就不需要显式地表示它。 情况2:非规格化的值 当阶码域为全0时,所表示的数就是非规格化形式。在这种情况下,阶码值是E = 1 - Bias,而尾数的值是M = f,也就是小数字段的值,不包含隐含的开头的1。 对于非规格化值为什么要这样设置偏置值 使阶码值为1-Bias而不是简单的-Bias似乎是违反直觉的。我们将很快看到,这种方式提供了一种从非规格化值平滑转换到规格化值的方法。 非规格化数有两个用途。首先,它们提供了一种表示数值0的方法,因为使用规格化数,我们必须总是使M≥1,因此我们就不能表示0。实际上,+0.0的浮点表示的位模式为全0:符号位是0,阶码字段全为0(表明是一个非规格化值),而小数域也全为0,这就得到M = f = 0。令人奇怪的是,当符号位为1,而其他域全为0时,我们得到值-0.0。根据IEEE的浮点格式,认为值+0.0和-0.0在某些方面是不同的,而在其他方面是相同的。 非规格化数的另外一个功能是表示那些非常接近于0.0的数。它们提供了一种属性,称为逐渐溢出(gradual under?ow),其中,可能的数值分布均匀地接近于0.0。 情况3:特殊值 最后一类数值是当指阶码全为1的时候出现的。当小数域全为0时,得到的值表示无穷,当s = 0 时是+∞,或者当 s = 1时是-∞。当我们把两个非常大的数相乘,或者除以零时,无穷能够表示溢出的结果。当小数域为非零时,结果值被称为“NaN”,就是“不是一个数”(Not a Number)的缩写。一些运算的结果不能是实数或无穷,就会返回这样的NaN值,比如当计算 在某些应用中,表示未初始化的数据时,它们也很有用处。

文档评论(0)

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

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

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档