首页 文章

理论上最小的浮点格式可能是什么?

提问于
浏览
4

假设您正在考虑IEEE-754格式的浮点数,例如单精度和双精度,那么您可能拥有的最小浮点格式是什么?

我知道有半浮动和小型装饰,但有多小仍然有意义?我知道应用程序可能不会使格式适合任何实际用途 .

我正在尝试确定你可以拥有的最小尾数位宽和最小指数宽度?

例如,有一个X.X格式的尾数是否有意义(假设单精度将表示为X.XXXXXXXXXXXXXXXXXXXXXXX)?另外,有一个宽度为1的指数是否有意义?

作为我的想法的一个例子:

如果您有X.X格式,并且没有指数,那么您唯一可能的数字是/ - {1.0,1.1},但是浮点数或格式是否有一些基本因素使得这些无法考虑?

3 回答

  • 3

    我偶尔使用四位FP格式:2个指数位和1个有效位 . 这为您提供了以下一组值:

    encoding    value
      x000     +/-0.0
      x001     +/-0.5
      x010     +/-1.0
      x011     +/-1.5
      x100     +/-2.0
      x101     +/-3.0
      x110     +/-Inf
      x111        NaN
    

    显然,你不能用这种格式做很多有用的计算,但它对教学很有用,因为它是最小的格式,可以为你提供所有有趣的边缘情况(没有信号NaN,但是,如果你关心它,除非你想要制作“-NaN”信号 .

    从某种意义上说,这是"smallest"浮点格式,但仍然没有使用过它,因为它的基本上是每个方式都比带有一个小数位的4位带符号定点格式更糟糕 . 在一般设置中真正通过此测试的最小浮点格式是半精度(尽管8b格式有一些小众用途) .

    没有有效位的三位格式几乎可以工作;它给你/ -0,/ -1,/ -2和/ -Inf,但是如果你遵循通常的IEEE-754编码规则,就没有可用的NaN编码 . 使用 b010 用于Inf和 b011 用于NaN会更好,但是在算术中不会出现舍入(除了1 1溢出),这对于教学来说不是很有用 .

  • 2

    通常,浮点数的整个点是能够表示比一些二进制数表示允许的更宽范围的值,无论是小还是大 .

    我遇到的最小的实用格式是微小的8位浮点表示 . 它看起来像这样:

    [ 1-bit sign ] [ 4-bit exponent ] [ 3-bit mantissa/fraction ]
    

    在这种情况下,指数的范围限制在1/64到128之间(因为您需要NaN /无穷大的表示) . 回想一下,FP被评估为 sign x (1 + mantissa) x 2^(exponent - bias) .

    您可以继续从IEEE-754格式推断,甚至可以提出6位浮点表示:

    [ 1-bit sign ] [ 3-bit exponent ] [ 2-bit mantissa/fraction ]
    

    但最终发生的是有效值的分布在接近零的范围内扩散(即,您能够以更精确的方式表示数字接近于零而不是远离零的数字) .

    我想你可以坚持下去,直到你用完一些东西(也许你放弃了标志,或者根据你的应用程序和你需要的有效值改变偏差),但在某些时候你需要重新考虑调用你的格式“浮点” .

  • 3

    8位浮点格式作为数据存储格式并不完全不常见(例如,μ律音频编码基本上是浮点格式) . 它们通常不用于存储分数,以便在更小的空间中存储相当小的整数的近似值 . 带有4个1位尾数的带符号格式可以精确地保持整数高达/ -31,并且最大范围为/ - 1,984(31 * 64);具有4个1位尾数的无符号格式可以将该范围扩展到507,904(31 * 16,384) . 这样的格式对于计算是没有用的,因为每次计算都可能丢失大量的尾数,并且开始时没有多少 . 尽管可以使用较小的浮点格式,但使用映射表通常更好 . 例如,当使用具有2 1位尾数的浮点格式时,32到80的值将形成序列(32,40,48,56,64,80);连续值之间的比率范围为5:4(1.250)至8:7(1.143) .

    使用“更平滑”的压缩表,每个因子为两个步骤,可以使用序列(32,38,45,54,64,76),得到比率(1.188,1.184,1.200,1.185,1.188) . 如果只有例如64个可能的信号值,64项表将允许任何值转换为其较长的表示;反向转换可能需要稍微大一点的表,但即使该表也可能非常小,因为最大和最小可表示值之间的比率不会很大 .

相关问题