尾数有效位

DrP*_*268 3 floating-point binary floating-accuracy

我只是对尾数位有点困惑。

在我的练习考试中,我被要求将小数转换为浮点数。按照 1 个符号位、4 个指数位和 5 个尾数位计算,数字 132 根据我们的答案如下表示:

0 1110 00001

对于上面的表示,我的实际尾数位是 0000100。

由于我只给出了 5 位尾数,这是否意味着我们只计算最左边的 5 位,然后丢弃后面的任何内容?

例如,如果我有其他数字 0000101,我是否会丢弃最后两位,它仍然是 00001?谢谢你!

Eri*_*hil 10

解码浮点表示

\n

在表示浮点数的位 0 1110 00001 中:

\n
    \n
  • 0 是符号位s
  • \n
  • 1110 是指数域e。(这不是指数;它是指数的编码。)
  • \n
  • 00001 是有效数1字段f。(这不是有效数;它是有效数的编码。)
  • \n
\n

这些位的解释为:

\n
    \n
  • (\xe2\x88\x921) s中使用符号位s来给出符号。对于 0,(-1) 0 = +1,所以表示的数字是正数。
  • \n
  • 通过减去偏差来调整指数字段e以给出实际指数。这个问题没有说明使用什么来表示偏差,但我们可以算出它是 7,因为这就是 IEEE-754 模式的值。对于指数字段 1110(二进制为 14),实际指数为 14\xe2\x88\x927 = 7。这意味着表示的数字将按 2 7缩放。
  • \n
  • 只要指数字段不全为零或全一,有效数字字段f的解释方式是写入 \xe2\x80\x9c1.\xe2\x80\x9d,附加有效数字字段的位,并将其解释为二进制数字。2对于位 00001,我们有 1.00001,即 1 + 1/32。这是有效数F
  • \n
  • 总而言之,表示的数字为 (\xe2\x88\x921) s \xe2\x80\xa2 2 e \xe2\x88\x927 \xe2\x80\xa2 F = +1 \xe2\x80\xa2 2 7 \xe2 \x80\xa2 (1 + 1/32) = 128 \xe2\x80\xa2 (1 + 1/32) = 128 + 4 = 132。
  • \n
\n

对浮点表示进行编码

\n

为了编码 00000101,我们不从给出的第一位开始。我们找到第一个有效数字,对于二进制来说,它是第一个 1 位。在 00000101 中,第一个 1 位位于位置 2(对应于值 2 2)。然后,为了形成有效数,我们从那里取出六位,而不是五位。尾数字段为 5 位,但尾数为 6 位,因为对于正常范围内的数字,它包括通过指数字段编码的前导一位。在 00000101 中,有效数所需的六位是 101000。后三位是隐式的。所以有效数是 1.01000。

\n

为了对这个正数、指数为 2、有效数字为 1.01000 的数字进行编码,我们使用 0 作为符号位,使用 2+7 作为指数字段,使用 01000 作为有效数字字段,因此编码为 0 1001 01000。

\n

如果数字的前六位有效数字后面有非零位,则无法以这种浮点格式表示实际数字。在这种情况下,我们可以声明无法完成转换的错误,或者可以将数字舍入到最接近的可表示值。大多数情况下,舍入是通过将数字舍入到最接近的可表示值\xe2\x80\x94 来完成的,如果有效数后面的位以 0 开头,则向下舍入。如果它们以 1 开头并且在某处至少包含一个 1,则向上舍入。如果它们以 1 开头并且之后的所有数字都是零,则该数字位于两个可表示值之间的中间,通常的规则是选择具有偶数低位的可表示值(使有效数的最后一位为 0)。

\n

脚注

\n

1 \xe2\x80\x9cSignificand\xe2\x80\x9d 是浮点数的小数部分(相对于指数或符号)的首选术语。\xe2\x80\x9cMantissa\xe2\x80\x9d 是对数小数部分的旧术语。尾数是对数;添加到尾数将乘以所表示的数字。有效数是线性的;有效数乘以所表示的数字。

\n

2如果指数字段e全为零,则它表示 1 减去偏差的指数,有效数字字段被解释为 \xe2\x80\x9c0.\xe2\x80\x9d 后跟该字段的位,而不是\xe2\x80\x9c1。\xe2\x80\x9d。

\n