【发布时间】:2016-08-16 17:52:43
【问题描述】:
我试图理解为什么二进制偏移表示法中的偏移K 计算为
2^{n-1}-1 而不是 2^{n-1} 用于浮点指数表示。这是我对2^{n-1} 的推理。
四位可以代表[-8;7]范围内的值,所以0000代表-8。这里与零的偏移量是8,可以计算为2^{n-1}。使用这个偏移量,我们可以定义任何数字的表示形式,例如数字3。
我们需要在-8 上加上什么数字才能得到3?它是11,因此偏移二进制中的3 表示为1011。而公式似乎是number to represent + offset。
然而,真正的公式是number to represent + offset - 1,所以正确的表示是1010。有人能解释一下为什么我们还要减去额外的一个吗?
【问题讨论】:
-
之所以这样计算,是因为浮点格式是这样定义的。这很随意,但这就是它的定义方式。
-
@gnasher729,因为它与指定的格式 here 不同,我认为他们自己有一些推理来定义它,我想知道这个推理:)
-
我不知道是否重要,但是以这种方式计算指数,最大值的绝对值大于(一),然后是较小的。这使得较大的数字可以表示,而较小的数字则被非规范的表示覆盖。
-
@Bob__,你的意思是范围变成
[-7;8]而不是[-8;7]?您能否详细说明示例,也许在单独的答案中?
标签: binary