这是 1996 年提出的相当古老的问题,因此请忽略错误。
这里的指数是 8 位,那么我们将偏置为 128 对吗?但如何进一步解决问题,请帮忙。
可能预期的答案是 D,但这个问题提出得不好。
首先,在“0.5[含]~1[不含]”的可表示数与“0.5[含]~( 1-2-23 )[含]的可表示数相同的意义上,B和D是等价的答案。 ” 用端点来描述间隔而不指定它们是包含还是排除是模棱两可的。
鉴于作者没有具体说明这一点,我的感觉是他们打算将间隔包括两个端点,这使得 D 成为预期的答案。这仅基于我对各种人类行为和思维普遍性的感觉,而不是基于问题的任何数学或逻辑要求。
其次,由于浮点表示的性质,“此表示中归一化数的大小范围”必须跨越某个区间 [ x , 2 x ]。(这里我们将“幅度”理解为有效数字1的值,与符号或指数分开。)这是因为有效数字是浮点基数中固定长度的数字,在这种情况下为 2。当有效数字被归一化时,它的前导数字是非零的。因此,忽略小数点,归一化以二为底的有效数字的数字范围可以从 1000…000 2到 1111…111 2. 每个浮点格式都固定了这个有效数字中小数点的位置,但是,无论它是固定的,它都会给第一个端点一些值x和第二个端点一些值,刚好低于 2 x。因此,归一化二进制有效数总是跨越某个区间 [ x , 2 x ]。答案 A 和 C 不符合这一点,因此它们不可能是正确的。
尽管这允许我们将选择范围缩小到 B 和 D,但对于初始浮点课程中的简单复习问题来说,这是过多的推理。该问题应该说明如何解释“尾数”字段的位。虽然它声明它们是“the”符号幅度表示,但它们不是二进制数字,因为这将给出从 -2 23到 +2 23 -1 (包括)的值。因此,为小数点选择了其他位置。[½, 1) 的区间(对于幅度,忽略符号)和 [1, 2) 是常见的,但可以使用[ x , 2 x ) 的任意区间。IEEE-754 名义上使用指数偏差为 127 的 [1, 2),但它可以很容易地使用 [2 −127 , 2−126 ) 并说指数偏差为零!这对规范没有影响:它会改变措辞,但不会影响数学、实现要求或行为。所以我们看到位如何表示有效数字在很大程度上是任意的,并且问题未能指定表示。
1 “有效位”是浮点数小数部分(相对于指数或符号)的首选术语。“尾数”是对数小数部分的旧术语。尾数是对数的;添加到尾数乘以表示的数字。有效数字是线性的;乘以有效数字乘以表示的数字。