将归一化浮点二进制转换为否定

Converting normalised floating point binary to denary

提问人:Chris 提问时间:6/11/2023 最后编辑:Chris 更新时间:6/12/2023 访问量:92

问:

当您移动值进行转换时,当二进制数的某些数据丢失时,您应该怎么做?我将在下面添加一个示例。我要写我的作品,以防万一!

假设我们有二进制数(8 位尾数,4 位指数,均为 2 的补码)10100011 1100

由于指数是 -4,这意味着我们必须将小数点左边移位 4。由于数字为负数(前导 1),因此我们用 1 而不是 0 填充以获得11111010

我有几个问题。

  1. 现在如何处理最终丢失的额外数据(即 0011)?
  2. 我在开头添加 1 是否正确,因为原始标准化数字以 1 开头?
  3. 如果指数为正,我会用 1 还是 0 填充(丢失的数据会怎样?
浮点 二进制

评论


答:

0赞 Eric Postpischil 6/12/2023 #1
  1. 现在如何处理最终丢失的额外数据(即 0011)?

有一个选择。大多数情况下,传出数字用于对结果进行四舍五入。如果只是丢弃这些数字,结果将是某个数字 x。在浮点数中,x 上方有一些数字,比如 y。例如,对于六个二进制数字,在 1.00011 之后,有 1.00100。设 z 是我们可以保留数字时的数字。则 z 介于 x 和 y 之间(可能正好 x),它要么更接近 x,要么更接近 y,要么同样接近。如果我们四舍五入到最接近的可表示值,则使用 x(如果它更接近),则使用 y(如果它更接近)。如果出现平局,则最常用的规则四舍五入到 xy 中位数为偶数的任意一个。

但是,还有其他规则。您可以通过四舍五入到奇数来中断关系,这有助于保留信息丢失的事实。您可以丢弃数字,始终选择 x,有效地向零四舍五入。您可以向 xy 中较低的任何一个四舍五入,有效地向 −∞ 四舍五入。或者你可以四舍五入到更大,有效地四舍五入到 +∞。

  1. 我在开头添加 1 是否正确,因为原始标准化数字以 1 开头?

用于浮点的最常见格式不使用 2 的补码。他们会用零来扩展数字,而不是任何符号扩展。

如果您使用的是 2 的补码,则使用符号扩展来扩展“左侧”(增加位置值的方向)上的有效字段。

  1. 如果指数为正,我会用 1 还是 0 填充(丢失的数据会怎样?

数字右侧的数字已经全部为零。例如,如果我们有数字 1.00011,它是 1.000110000000000000...