理解二进制补码
Understanding two's complement
不明白为什么一个n位的2C系统数可以通过使bit bn = bn−1扩展为(n+1)位的2C系统数,即扩展为(n+ 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
不明白为什么一个n位的2C系统数可以通过使bit bn = bn−1扩展为(n+1)位的2C系统数,即扩展为(n+ 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