1

取十进制 8 的二进制表示:0000 1000。使用二进制补码,通过交换所有位并加一来找到相反的结果:1111 1000。现在我们有了十进制 -8 的二进制表示。

但是我们怎么知道将这个十进制解释为 -8 还是 248?

4

2 回答 2

1

当有人写下一个二进制数时,他们通常会指定它是有符号的还是无符号的。如果他们没有指定任何内容,您可以假设它是无符号的,即在这种情况下为 248。

于 2013-10-15T20:56:39.027 回答
0

符号位,最左边的位,最高有效位,是 1,这意味着它是一个负数。

如果你有 8 位,你只能得到 -128 到 127(这 256 个不同的值)。所以最大的正数是 01111111 你不能超过 127。所以这就是你知道的。

注意 - 最左边的位仍然被称为符号位,即使它不是符号和幅度表示的符号位。它除了符号之外还具有价值,但它确实显示了符号。 维基百科二进制补码
“最高有效位确定数字的符号,有时称为符号位。与符号和大小表示不同,符号位也具有权重..”。

稍微切线 - 我要添加以下内容,作为快速执行 2s 补码的速记,这是一个示例,如果您必须将 0101 放入 2s 补码中,请从右侧按住第一个 1。然后轻弹其余部分。所以按住最右边的 1 并轻弹其余部分。0101 变为 1011。注意这与 0101 反转为 1010 并加 1 所以 1011 的非快捷方式相同。当你有 1011 时,你可以减一并反转得到 0101。你可以反转并加 1 和你得到 0101。你也可以使用相同的技术,按住最右边的第一个 1,然后轻弹其余的,然后返回 0101。这适用于其中任何一个。0110 在 2s 补码中,按住最右边的 10,轻弹它左边的那些,你得到 1010。

你可能会问,你怎么知道它是 2s 补码,从某种意义上说,你怎么知道数字存储在什么数字格式中。无论是 2s 补码还是 1s 补码。或符号幅度或浮点。好吧,你必须知道'因为你存储了它!您无法存储数据,也无法记住数据的含义!

于 2013-10-15T20:49:38.220 回答