【问题标题】:What are the maximum number of values representable for different ranges within the floating-point representation?浮点表示中不同范围可表示的值的最大数量是多少?
【发布时间】:2014-09-23 06:56:03
【问题描述】:

我正在尝试找出对浮点值使用标准化表示的一些细节。

据我了解,IEEE-754 表示的工作方式如下:

1.{significand} * 2^{exponent}

对于单精度,有效数为 24 位,指数为 8 位。

我试图将其分解为基本上是指数支持的每个数字范围内可用的“插槽”数量,例如:

[Exponent=0] 0.0 - 1.0 : 2^23 values
[Exponent=1] 1.0 - 2.0 : 2^23 values
[Exponent=2] 2.0 - 4.0 : 2^23 values
[Exponent=3] 4.0 - 8.0 : 2^23 values

我试图证明,在使用量化时,如果我感兴趣的范围限制在 0.0 - 1.0,我可以使用 2^24 位来表示这个数字,并且在去除指数,这可以很容易地转换为完整的浮点表示。此外,为了清楚地说明使用浮点时更接近零的精度比更远的精度更高,因为感觉这可能非常直观易懂。

我不太清楚的一个领域是支持的指数是 -127 到 126,负数部分是如何工作的? 1.5 * 2^-1 明显与 0.0 - 1.0 范围重叠。

最后,我知道有效数字中的一个位用于符号,但是隐藏位代表什么,这会影响每个范围内可用的“插槽”数量吗?

【问题讨论】:

  • 请注意,尾数有 24 位,但由于最高位始终为规范化数字设置,并且始终为非规范化数字清除,因此不存储。存储 23 位尾数。
  • 要回答您问题的“使用 2^24 位来表示这个数字并且不会损失精度”部分,有很多介于 0 和 0.5 之间的浮点数不能以您似乎正在考虑的 24 位定点格式无损失地表示。
  • 您的指数范围有点混乱:正常数字的(无偏)指数介于 -126 和 127 之间(对应于有偏指数的 8 位)字段范围在 1 到 254 之间)。指数字段 0 保留给零和次正规,而指数字段 255 保留给无穷大和 NaN。
  • 0.0 和 1.0 之间没有 2^23 个值:0.5 和 1.0 之间有 2^23,0.25 和 0.5 之间有 2^23,0.125 和 0.25 之间有 2^23,依此类推,依此类推,直到你得到非规范化的数字。

标签: floating-point ieee-754 floating-point-precision floating-point-conversion


【解决方案1】:

我认为你的桌子错了。应该是:

…… [指数=-3] 0.125 - 0.25:223 个值 [指数=-2] 0.25 - 0.5 : 223 个值 [指数=-1] 0.5 - 1.0 : 223 个值 [指数=0] 1.0 - 2.0 : 223 个值 [指数=1] 2.0 - 4.0 : 223 个值 [指数=2] 4.0 - 8.0:223 个值 ……

或者更准确地说:

…… [指数=-3] 0.125 ≤ x 23 个值 [指数=-2] 0.25 ≤ x 23 个值 [指数=-1] 0.5 ≤ x 23 个值 [指数=0] 1.0 ≤ x 23 个值 [指数=1] 2.0 ≤ x 23 个值 [指数=2] 4.0 ≤ x 23 个值 ……

【讨论】:

  • 范围在 2^n 和 2^(n+1) 之间的标准化浮点数通常称为“binade”。用词表示概念很有用,在考虑浮点时经常会出现这个概念。
  • 好吧,你 often call it a binade,这是肯定的!不过,我不知道还有谁这样做。你是对的,一个词会很有帮助,但是 binade 在英语中是一个很尴尬的词。
  • 是的,我是这个词的忠实粉丝。但威廉·卡汉也这么称呼它,这对我来说已经足够好了:cs.berkeley.edu/~wkahan/testpi/nearpi.c
  • 那个源代码已经三十年了!作者是 S. McDonald,而不是 William Kahan。无论如何,当你说它“通常被称为“binade””时,你是在把事实延伸到临界点。
  • 我低估了它,如果有的话。几乎任何需要参考这组数字的人都称其为“binade”。最近的参考资料是 2010 年出版的“浮点算术手册”,由 9 位作者撰写,每位作者都被认为是著名的专家,不会让这本书用错误的词出版。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-16
  • 2010-12-22
  • 2018-10-23
  • 2023-03-19
  • 2019-02-15
  • 1970-01-01
相关资源
最近更新 更多