二进制转化为2的补码

Binary into 2's compliment

如果我将二进制数 000000 转换为 2 的补码,我将得到 1 的补码(反转)= 111111 2 的恭维 (加 +1) = 这里我 运行 遇到问题,这个 return 000000 和 1 被丢弃还是 return 1000000?

提前致谢!

它丢弃了 1。条件类似于 Arithmetic Overflow.

二进制补码的强大之处在于,它可以帮助我们在考虑有符号数时保留二进制表示,因为在数学中,0 的值与 -0 的值相同。如果我们不得不为了符号而放弃一整位,那么,在一个 4 位字中,0000 表示 01000 表示 -0,浪费了一个表示。两者的补码有助于摆脱这种情况。如果我们假设 4 位字: val -val bits of val two's complement bits of -val (1's complement + 1) 0 0 0000 0000 (1111+0001) 1 -1 0001 1111 (1110+0001) 2 -2 0010 1110 (1101+0001) 3 -3 0011 1101 (1100+0001) ... 7 -7 0111 1001 (1000+0001) 8 -8 (no rep) 1000 (0111+0001) (请注意,对于 -8 你有 8 的无符号补码,即 8 = 1000 因此它的 one 的补码 0111).

因此,通过使 0-0 具有相同的位模式,即 0000,您可以获得 -8 的表示。使用这个,对于 n 位,我们可以表示 所有 整数值在 -2^(n-1)2^(n-1)-1.

之间