2013-10-15 65 views
1

取8位十进制的二进制表示形式:0000 1000.使用二进制补码,通过切换所有位并加1来找到相反的:1111 1000.现在我们有一个-8位十进制的二进制表示形式。区分带符号的二进制值

但是,我们如何知道是否将这个十进制解释为-8或248?

+2

2的补码意味着您正在使用带符号的值。 –

回答

1

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

0

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

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

注意 - 即使它不是符号和幅度表示的符号位,最左边的位仍然称为符号位。它拥有除符号之外的价值,但它确实显示了符号。 wikipedia twos complement
“最重要的位决定数字的符号,有时称为符号位。与符号和幅度表示不同,符号位也具有权重..”。

在一个小小的切线上 - 我会加上以下内容,作为快速填写2s的简写,下面是一个例子,如果您必须将0101置于2s补码中,则从右边开始保留第一个1.然后轻弹其余的。所以把最右边的1拿起,然后轻弹其余部分。 0101变为1011.请注意,与0101的非快捷方式相反,为1010并加1为1011相同。而当您有1011时,您可以减去一个,然后取反0101。然后您可以反转并将1和你会得到0101.你也可以使用相同的技术,在最右侧持有第一个1,然后轻弹其余部分,然后回到0101.这适用于其中的任何一种。 0110以2s为补码,在最右边保持10,在它的左边轻弹那些,你得到1010.

你可以问,你怎么知道它是二进制补码,在你的意义上知道该号码存储在什么数字格式中。无论是2s补码还是1s补码。或者标记幅度或浮点数。那么,你必须知道'因为你存储它!你不能存储数据,也不能记住数据的含义!

相关问题