假设您正在考虑IEEE-754格式的浮点数,例如单精度和双精度,那么您可能拥有的最小浮点格式是什么?
我知道有半浮动和小型装饰,但有多小仍然有意义?我知道这些应用程序可能不适用于任何实际用途的格式。
我试图确定你可以拥有的最小尾数位宽和最小指数宽度?
例如,有一个X.X格式的尾数是否有意义(假设单精度将表示为X.XXXXXXXXXXXXXXXXXXXXXXX)? 另外,有一个宽度为1的指数是否合理?
作为我所想的一个例子:
如果你有X.X格式,并且没有指数,那么你唯一可能的数字是+/- {1.0,1.1},但是浮点数或格式是否存在一些根本无法考虑的因素?
答案 0 :(得分:3)
一般而言,浮点数的整个点是能够表示比某些二进制数表示允许的更大范围的值,无论是小还是大。
我遇到的最小实用格式是微小的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 ]
然后最终发生的事情是有效值的分布在接近零的范围内扩散(即,您能够以更接近零的数字表示更接近零的数字,而不是远离零的数字)。
我想你可以坚持下去,直到你用完了一些东西(也许你放弃了标志,或者根据你的应用程序和你需要的有效值改变偏差),但在某些时候你需要重新考虑将您的格式称为“浮点”。
答案 1 :(得分: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”信号。
从某种意义上说,这是“最小的”浮点格式并非完全退化,但你仍然不会使用它,因为它基本上比4位带符号的定点格式更糟糕。一个小数位。在一般设置中真正通过此测试的最小浮点格式是半精度(尽管 用于8b格式的一些小众用途)。
no 有效位的三位格式几乎可以正常工作;它会为您提供+/- 0,+ / - 1,+ / - 2和+/- Inf,但如果您遵循通常的IEEE-754编码规则,则无法使用NaN编码。使用b010
用于Inf和b011
用于NaN会更好,但是在算术中不会出现舍入(除了1 + 1溢出),这对教学不是很有用。
答案 2 :(得分:2)
八位浮点格式作为数据存储格式并不完全不常见(例如,μ律音频编码基本上是浮点格式)。它们通常不用于存储分数,以便在更小的空间中存储相当小的整数的近似值。带有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项表将允许任何值转换为其较长的表示;反向转换可能需要稍微大一点的表,但即使该表也可能非常小,因为最大和最小可表示值之间的比率不会很大。