隐式 1 如何存储并与次正态值的 0 进行区分?

How is the implicit 1 stored and differentiated with the 0 for subnormals?

提问人:newbie1kenobi 提问时间:7/23/2022 更新时间:7/23/2022 访问量:148

问:

我想我理解为什么我们将其视为隐式 1 和规范化,如何表示值等等。我唯一的问题是它的机器端如何,就像当机器读取/解释值时如何区分隐式 1 和 0 一样。我不知道我问的是否正确。基本上是机器如何区分归一化数和次正态数。

  1. 鉴于只有 32 位并且隐式 1 不包含在这些位中,如何解释它?

  2. 机器如何区分次正态值的 0 和 1?

  3. 说到准确度和精度,浮点能说些什么呢?随着实际指数的增加,精度分别降低和相反,这是否正确?准确性是如何影响的?

归一化 浮点精度 次正态数

评论


答:

2赞 Eric Postpischil 7/23/2022 #1
  1. 鉴于只有 32 位并且隐式 1 不包含在这些位中,如何解释它?

  2. 机器如何区分次正态值的 0 和 1?

如果指数字段中的位全部为零,则有效位的前导位为零。(称它为隐式位是用词不当;它被正式指定为指数场的函数,所以它被明确地说明。

如果指数字段中的位既不是全零也不全是一,则有效位的前导位为 1。

如果指数字段中的位都是 1,则浮点对象表示无穷大(如果有效字段全部为零)或 NaN(否则)。

指数字段值 0 和 1 实际上编码相同的指数,IEEE-754“单精度”格式 (binary32) 为 −126。指数字段值 e <其中 0 e < 255 编码指数值 E = e − 127,因此 1 编码 −126。 指数字段值 0 也编码 −126;指数字段值 0 和 1 之间的唯一区别是,0 表示有效位的前导位为 0,1 表示有效位的前导位为 1。

  1. 说到准确度和精度,浮点能说些什么呢?

《浮点运算手册》,第二版,2018 年,Jean-Michel Muller 等人著。

随着实际指数的增加,精度分别降低和相反,这是否正确?

精度一般是指有效位数中的位数,因此它不会随着指数的变化而变化。IEEE-754“单精度”数字的精度为 24 位。

准确性是如何影响的?

准确性取决于算术的使用方式和数据。浮点结果的精度范围可以从零到无穷大或 NaN。浮点的一些用途是“稳定的”,并产生接近理想结果的良好结果。有些用途不稳定,会产生误入歧途的结果。

评论

0赞 newbie1kenobi 7/24/2022
谢谢你的回答。为什么精度是 24 位而不是 23 位?在这种情况下,精度和分辨率一样吗?我得到了指数字段值的解释。我只是想知道机器如何与所谓的“隐式”或前导位(如 1 或 0)交互,因为它应该不计入 32 位,让我觉得它没有“存储”?
1赞 Eric Postpischil 7/24/2022
Re “为什么精度是 24 位而不是 23?”:有效位有 23 位存储在主有效字段中,1 位通过指数字段编码。这等于 24 位。
0赞 Eric Postpischil 7/24/2022
Re “在这种情况下,精度与分辨率相同吗?”:定义“分辨率”。
0赞 Eric Postpischil 7/24/2022
重新“计入 32 位”:IEEE-754 二进制32 的编码具有 1 位符号字段、8 位指数字段和 23 位主有效字段。这等于 32 位。
0赞 newbie1kenobi 7/24/2022
那么,这是否意味着存储在内存中的值是 24 位,由 32 点浮动格式数字表示?我所说的分辨率是指可以用浮点表示的每个值之间可能发生的最小变化。例如,在从 1 到 5 个整数的数字线上,要从每个值到下一个值,请加 1。在浮点数中,由于有 24 位,因此从一个值到下一个可表示值所添加的值是多少。