提问人:Chris 提问时间:6/11/2023 最后编辑:Chris 更新时间:6/12/2023 访问量:92
将归一化浮点二进制转换为否定
Converting normalised floating point binary to denary
问:
当您移动值进行转换时,当二进制数的某些数据丢失时,您应该怎么做?我将在下面添加一个示例。我要写我的作品,以防万一!
假设我们有二进制数(8 位尾数,4 位指数,均为 2 的补码)10100011 1100
。
由于指数是 -4,这意味着我们必须将小数点左边移位 4。由于数字为负数(前导 1),因此我们用 1 而不是 0 填充以获得11111010
。
我有几个问题。
- 现在如何处理最终丢失的额外数据(即
0011
)? - 我在开头添加 1 是否正确,因为原始标准化数字以 1 开头?
- 如果指数为正,我会用 1 还是 0 填充(丢失的数据会怎样?
答:
- 现在如何处理最终丢失的额外数据(即
0011
)?
有一个选择。大多数情况下,传出数字用于对结果进行四舍五入。如果只是丢弃这些数字,结果将是某个数字 x。在浮点数中,x 上方有一些数字,比如 y。例如,对于六个二进制数字,在 1.00011 之后,有 1.00100。设 z 是我们可以保留数字时的数字。则 z 介于 x 和 y 之间(可能正好是 x),它要么更接近 x,要么更接近 y,要么同样接近。如果我们四舍五入到最接近的可表示值,则使用 x(如果它更接近),则使用 y(如果它更接近)。如果出现平局,则最常用的规则四舍五入到 x 或 y 中位数为偶数的任意一个。
但是,还有其他规则。您可以通过四舍五入到奇数来中断关系,这有助于保留信息丢失的事实。您可以丢弃数字,始终选择 x,有效地向零四舍五入。您可以向 x 或 y 中较低的任何一个四舍五入,有效地向 −∞ 四舍五入。或者你可以四舍五入到更大,有效地四舍五入到 +∞。
- 我在开头添加 1 是否正确,因为原始标准化数字以 1 开头?
用于浮点的最常见格式不使用 2 的补码。他们会用零来扩展数字,而不是任何符号扩展。
如果您使用的是 2 的补码,则使用符号扩展来扩展“左侧”(增加位置值的方向)上的有效字段。
- 如果指数为正,我会用 1 还是 0 填充(丢失的数据会怎样?
数字右侧的数字已经全部为零。例如,如果我们有数字 1.00011,它是 1.000110000000000000...
评论