【问题标题】:Decimal to Floating Point 9-bit十进制转浮点 9 位
【发布时间】:2016-01-11 08:36:17
【问题描述】:

如何将 106 十进制转换为 9 位浮点,其中 msb 是带有 4 位指数和 4 位尾数的符号?可能吗?

【问题讨论】:

  • 为了制定答案,了解这种浮点格式是否遵循 IEEE-754 二进制浮点格式的约定会很有用。特别是,它是否使用有偏差的指数,指数值 0 保留用于零和非正规,指数值 0xF(即十进制 15)保留用于无穷大和 NaN?
  • "IEEE 754" 本身还不够,因为 IEEE 754 没有指定 9 位格式。例如,我们仍然需要知道指数偏差是什么。 (根据确实存在的 IEEE 754 格式,我猜测指数偏差为 7,但这是一个猜测。)如果您有具有相应位模式的示例值,这将有助于理解格式。
  • 嗯,好的。是的 7 偏见。我很确定 njuffa 做出了正确的假设。

标签: floating-point


【解决方案1】:

根据 OP 的评论,所讨论的浮点格式遵循 IEEE-754 约定,因此它使用带有隐式整数位的尾数表示,以及为零和非正规保留的最小指数编码和最大的偏置指数为无穷大和 NaN 保留的指数编码。

106(十进制)= 1.10101 * 26(二进制)。在提议的 IEEE 风格的 9 位浮点格式中,指数偏差为 7。归一化操作数的大小为 2-6 ≦ |x| 8。因此,106 在可表示的范围内,因为 28 = 256。

然而,106 是不可表示的,精确,因为它需要 5 个小数尾数位,而建议的格式只提供了 4 个。使用四舍五入到最接近或偶数的最接近的可表示数字是 1.1010 * 26 = 104。其二进制编码是 0_1101_1010。

【讨论】:

  • 我想你想要 2^8=256 (所以106 在可表示的范围内,虽然在四舍五入之前实际上不能表示)。 106 是1.10101 * 2^6,而不是1.10101 * 2^8
  • @MarkDickinson:你完全正确,不知道我是怎么弄错的,除了我在第一杯咖啡之前发布的内容。我会马上解决这个问题。
  • 是的,对于在其他方面出色的答案的吹毛求疵,我们深表歉意。 (我已经投票了。)
  • @MarkDickinson 我根本不认为这是吹毛求疵,对于这样的问题,对细节的关注非常重要。因此,再次感谢您引起我的注意。如果不正确的答案在上面放了很长时间,我会很尴尬。
猜你喜欢
  • 2011-03-05
  • 2015-10-11
  • 2014-01-29
  • 1970-01-01
  • 2021-09-10
  • 2014-03-01
  • 2016-06-02
  • 1970-01-01
  • 2017-02-23
相关资源
最近更新 更多