【问题标题】:Why offset is calculated as `2^{n-1} - 1` instead of `2^{n-1}` for floating point exponent representation为什么偏移量计算为 `2^{n-1} - 1` 而不是 `2^{n-1}` 用于浮点指数表示
【发布时间】: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


【解决方案1】:

我发布此作为答案是为了更好地解释我的想法,但即使我会引用该标准几次,我还没有找到明确说明的原因。

在下文中,我将参考 IEEE 754 标准(以及后续修订版)进行浮点表示,即使 OP 没有提及(如果我错了,请告诉我)。

问题是关于指数在浮点数中的特定表示。

在子条款 3.3 浮点数据集中说(强调我的):

可在 a 中表示的有限浮点数的集合 特定格式由以下整数参数确定:

b = 基数,2 或 10
p = 有效数字的位数(精度)
emax = 最大指数 e
emin = 最小指数 e

emin 对于所有格式应为 1 - emax

稍后指定:

最小的正正规浮点数是bemin和 最大的是bemax×(b − b1 − p)。幅度小于 bemin 的格式的非零浮点数 被称为次正规,因为它们的大小介于 零和最小的正常幅度。

3.4 二进制交换格式编码中:

二进制交换格式中的浮点数据表示在以下三个字段 (...) 中以 k 位编码:
a) 1 位符号 S
b) w-位偏置指数E = e + 偏置
c) (t=p−1)-位尾随有效位字段数字字符串T=d1 d2 ... d p - 1 ;有效数字的前导位 d0 隐式编码在偏置指数 E
(...)
编码偏差指数E的范围应包括:
― 1 和 2 之间的每个整数w - 2(含),用于编码正常数字
― 保留值 0 用于编码 ±0 和 subnormal 数字
― 保留值 2w - 1 编码 ±∞ 和 NaNs。

例如 32 位浮点数具有这些参数:

k,存储宽度,以 32 位为单位 p,精度为 24 位 emax,最大指数e 127 emin,最小指数 e -126 偏见,E - e 127 w,8 位的指数字段宽度 t,23 位尾随有效位字段宽度

this Q&A 中指出:“偏差的目的是使指数以无符号形式存储,从而更容易进行比较。”

考虑到上面提到的 32 位浮点表示,一个正常(不是 subnormal)数的编码偏差指数 E 在 1 到 254 之间。 p>

选择-126、127作为指数范围的原因在我看来可能是为了扩展可表示数字的范围:非常低的数字由表示次正规数 所以更大的(即使只有一个)最大指数可以处理大指数。

【讨论】:

  • 谢谢,这就是我的想法,我们只是将范围从[-7;8] 移动到[-8;7] 以获得4 位二进制数。它仅适用于浮点数,因为通常偏移量计算为2^(n-1) 以便于转换为two's complement,如here 所述
  • @Maximus 不客气。请注意,在您链接的同一页面中,它说“偏移二进制没有标准,但最常见的是......”。这肯定取决于转换的最终意图。
  • 是的,确切地说,来自 IEEE 的人决定将范围上移一位。我很好奇为什么
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 2012-07-30
  • 2022-06-17
  • 2022-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多