【发布时间】:2014-11-14 16:11:10
【问题描述】:
寻找 2 的补码。
如果一个数是正数,那么它的表示和它的有符号表示是一样的
0101 ???? +5 0110 ???? +6 0111 ???? +7如果一个数字是负数,我们首先转换它的有符号表示的补码,然后加一。
比如 -7 是 0111+1=1000
对于 -128,它是 +128 的补码并加一。+128 的有符号表示为 010000000(第一个零表示符号)。它的补码是 101111111。给它加一得到 110000000,这是一个九位数。
因此我们不能将 -128 存储为二进制补码形式????
【问题讨论】:
-
您可以将单个字节中的 -128 表示为 2s 补码,但您不能表示 +128 -- 最多只能表示 +127。
-
@hot 舔怎么 -128 我在这里显示我们无法存储
-
+128 的 8 位表示为
10000000。一个补码是01111111。加一得到10000000,-128 的二进制补码表示。请注意,它与 +128 的表示相同。这意味着我们必须(系统地)决定10000000是指+128 还是-128。我们选择将其设为 -128,以便第一位是符号位。 -
是的,2s补码的标准约定是高位是符号位,所以
10000000是一个负数。 -
-7的 4 位数字表示为1001。那是因为0111的补码是1000,然后你加一个得到1001。
标签: java c math binary twos-complement