首页 理论教育 C.4浮点表示法

C.4浮点表示法

更新时间:2025-01-09 工作计划 版权反馈
【摘要】:表示楼面、地面各层构造。表示出需另画详图之处的索引符号。室外地坪标高为-0.300 m,屋顶结构板面标高为7.400 m,窗C1215 底标高为3.800m,如图5-30所示。除了存储归一化数值外,IEEE浮点标准还规定了一些特殊的表示方式,用以表达非标准化数值,以及各种非法数值和错误情况,比如NaN(非数值)。

在浮点表示法中,数值包括尾数和指数两部分,就像我们通常使用的科学计数法一样。不过,与(尾数10×10指数10)的形式不同,浮点数是以二进制的形式(尾数2×10指数2)存储。一般地,浮点表示法可以使用IEEE单精度和双精度格式[70],如图C.1所示。

978-7-111-33881-9-Part03-59.jpg

图C.1 IEEE-754中浮点的表示

下面详细讨论一下单精度表示法,双精度表示法从概念上讲比较相似。在单精度表示法中,符号位代表了该数值的符号,0代表正数,1代表负数,可以解释为-1S。该数值的8位指数部分的偏移量为127(称为“余127”),这样000000002表示-127,111111112(25510)表示128,011111112(12710)表示0。因此,指数因子的取值范围是2-127~2128,不过我们稍后会看到一些特殊情况下的指数保留值。23位的尾数部分为二进制数值1.MMM…MMM,注意是二进制小数,而不是十进制小数。尾数的每一位所代表的数值如下:

978-7-111-33881-9-Part03-60.jpg

通过约定最高位为1(归一化条件下),尾数的范围可以从(1.0)(当所有的M位都为0时)到(2.0-2-23)(当所有的M位都为1)。浮点数的样本如下:

978-7-111-33881-9-Part03-61.jpg

最后一个,尽管该浮点数很接近0.1,但使用这样的形式,不可能精确表示0.1。实际上,0.1可以由一个无限的二进制序列来精确表示。

978-7-111-33881-9-Part03-62.jpg

并且,使用它来计算是不准确的。尽管误差可能相当微小,但经过重复计算,可能会导致相当大的累积误差,并且一种形式的量化噪声也会存在于结果中。

如果尾数的最高位约定为1,就不可能精确表示0.0。为了解决这个问题,专门为精确表示0.0指定了一种方式。如果指数和尾数域都是0,IEEE标准定义该值为0.0。

尽管浮点表示法允许更宽的数值范围,在数学计算中依然可能存在其他不准确性。一种可能导致不准确的情况是,把一个很小的数加到一个非常大的数上时。为了加或减两个浮点数,必须要先将它们变换为具有相同的指数值的形式,然后尾数才能相加。加完尾数后,和要进行归一化,尾数的最高有效位应为1,然后调整指数。如果两个数中,一个比另一个大太多,结果可能会不准确。我们用下面的图来表示两个加数。(www.xing528.com)

978-7-111-33881-9-Part03-63.jpg

操作数1978-7-111-33881-9-Part03-64.jpg978-7-111-33881-9-Part03-65.jpg操作数2

把第二个加数的指数变换为第一个加数的指数151(100000002)后,尾数的加法会发生下面的情况(指数没有显示)。

978-7-111-33881-9-Part03-66.jpg

尾数1978-7-111-33881-9-Part03-67.jpg

尾数2978-7-111-33881-9-Part03-68.jpg

978-7-111-33881-9-Part03-69.jpg

和的尾数978-7-111-33881-9-Part03-70.jpg

为了便于存储,和的尾数必须要被截断为23位。当这样处理之后,我们可以看到和的尾数与第一个加数的尾数相比没有变化,加法没有起作用。更详细的关于计算中数值准确性讨论见参考文献[71,72]。

除了存储归一化数值外,IEEE浮点标准还规定了一些特殊的表示方式,用以表达非标准化数值,以及各种非法数值和错误情况,比如NaN(非数值)。详细讨论参见参考文献[70]。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈