二进制转化为2的补码
Binary into 2's compliment
如果我将二进制数 000000 转换为 2 的补码,我将得到
1 的补码(反转)= 111111
2 的恭维 (加 +1) = 这里我 运行 遇到问题,这个 return 000000 和 1 被丢弃还是 return 1000000?
提前致谢!
它丢弃了 1
。条件类似于 Arithmetic Overflow.
二进制补码的强大之处在于,它可以帮助我们在考虑有符号数时保留二进制表示,因为在数学中,0
的值与 -0
的值相同。如果我们不得不为了符号而放弃一整位,那么,在一个 4 位字中,0000
表示 0
,1000
表示 -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
.
之间
如果我将二进制数 000000 转换为 2 的补码,我将得到 1 的补码(反转)= 111111 2 的恭维 (加 +1) = 这里我 运行 遇到问题,这个 return 000000 和 1 被丢弃还是 return 1000000?
提前致谢!
它丢弃了 1
。条件类似于 Arithmetic Overflow.
二进制补码的强大之处在于,它可以帮助我们在考虑有符号数时保留二进制表示,因为在数学中,0
的值与 -0
的值相同。如果我们不得不为了符号而放弃一整位,那么,在一个 4 位字中,0000
表示 0
,1000
表示 -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
.