浮点数表示

Floating point number representation

这是 1996 年问的一个很老的问题,所以请忽略错误。

这里的指数是8位的,那么我们将偏差取为128对吧?但如何进一步解决问题请帮忙。

  • 为什么它在 1996 年提出非 IEEE-754 格式,在该标准获得批准并被广泛采用很久之后。
  • 隐式小数点在哪里? (我认为 Burroughs 5000 很奇怪。)
  • 第 23 位有符号位是不正常的。
  • 可能的答案似乎并不关心指数。
  • 我认为没有任何答案是正确的,即使提供了缺失的规范。

可能的预期答案是 D,但问题提出得不好。

首先,B和D是等价答案,因为“0.5[含]至1[不含]”中的可表示数与“0.5[含]至(1 − 2−23) [包括]。”用端点描述一个间隔而不指定它们是包含还是排他是不明确的。

鉴于作者未能指定这一点,我的感觉是他们打算将间隔包括两个端点,这使得 D 成为预期的答案。这完全基于我对各种人类行为和思维普遍存在的感觉,而不是基于问题的任何数学或逻辑要求。

其次,“此表示中归一化数的大小范围”必须跨越某个区间[x, 2x ],由于浮点表示的性质。 (这里我们把“量”理解为有效数1的值,与符号或指数分开。)这是因为有效数是浮点数基数中固定长度的数字,在这种情况下是两个。当有效数被归一化时,其前导数字为非零。因此,忽略小数点,归一化的以二为底的有效数字的数字范围可以从 1000…0002 到 1111…1112。每个浮点格式都固定了小数点在这个有效数字中的位置,但是,无论它是固定的,都会给第一个端点一些值 x 和第二个端点一些值正好在下面2x。因此,归一化的二进制有效位总是跨越一些区间[x,2x]。答案A和C不符合这个,所以不可能是正确的。

虽然这允许我们将选择范围缩小到 B 和 D,但对于初始浮点课程中的简单复习题来说,这是过多的推理。这个问题应该说明如何解释“尾数”字段的位。尽管它声明它们在“the”符号幅度表示中,但它们不是二进制数字,因为这将给出从 −223 到 +223−1(含)。所以已经为小数点选择了其他一些位置。 [½, 1)(为了量级,忽略符号)和[1, 2)的区间是常见的,但是[x, 2x[的任意区间=43=]) 可以使用。 IEEE-754 名义上使用指数偏差为 127 的 [1, 2),但它可以很容易地使用 [2−127、2−126) 并说指数偏差为零!这对规范没有影响:这只是措辞上的变化,但根本不会影响数学、实现要求或行为。所以我们看到位如何表示有效数在很大程度上是任意的,并且该问题未能指定表示。

脚注

1 “有效数”是浮点数的小数部分(相对于指数或符号)的首选术语。 “尾数”是对数的小数部分的旧术语。尾数是对数的;添加到尾数乘以表示的数字。有效数是线性的;将有效数字乘以表示的数字。