区分有符号的二进制值

时间:2013-10-15 20:39:48

标签: binary

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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补码,从某种意义上说,你怎么知道这个数字存储的数字格式。无论是2s补码还是1s补码。或者标记幅度或浮点。好吧,你必须知道'因为你存储它!您无法存储数据,也无法记住数据的含义!