理解两个补语

时间:2015-11-02 23:55:25

标签: bit-manipulation twos-complement

我不明白为什么n位2C系统号可以通过使位bn = bn-1扩展到(n + 1)位2C系统号,也就是说,扩展到(n + 1)通过复制符号位来进行比特。

1 个答案:

答案 0 :(得分:1)

这是因为我们计算二进制整数值的方式。

Working right to left, the sum of each bit_i * 2 ^ i,
where 
    i is the range 0 to n
    n is the number of bits

因为每个后续的0位不会增加和的幅度,所以将较小的值填充到较宽的位域是合适的值。

例如,使用数字5:

4 bit:     0101
5 bit:    00101
6 bit:   000101
7 bit   0000101
8 bit: 00000101

对于两个赞美系统中的负数,情况正好相反。 记住你先计算一个人的赞美然后加1来计算两个人的赞美。

将前一个示例中的值反转为-5:

4 bit:     0101 (invert)->     1010 + 1 ->     1011
5 bit:    00101 (invert)->    11010 + 1 ->    11011
6 bit:   000101 (invert)->   111010 + 1 ->   111011
7 bit:  0000101 (invert)->  1111010 + 1 ->  1111011
8 bit: 00000101 (invert)-> 11111010 + 1 -> 11111011