补码(Two’s complement)是什么
大多数计算机使用补码来表示负数。这种方法在执行数学运算(如加法和减法)时更有效。
位的最左边叫最高有效位 (the most significant bit or MSB) : 用于指示正数或负数,其余位用于存储数字的实际大小。正数总是以 0 开头。
四位正数的补码数为 0000 = 0、0001 = 1~ 0111 = 7。最小的正数是最小的二进制能表示的值。
负数总是以 1 开头。最小的负数是最大的二进制值。1111 是 -1,1110 是 -2,1101 是 -3,直到 1000 代表 -8。
对负数求二进制补码的一般过程
- 找到要表示的负数的正二进制值。
- 在数字前面加一个 0,表示它是正数。
- 取反
- 将此数字加 1。
使用二进制补码求 -1
1 = 001
前面加0变成0001
取反 变成1110
加 1 = 1111 ( -8 + 4 + 2 + 1 = -1 )
或者:
2^8 - 1 = 10000 - 1 = 1111
使用二进制补码求 -4
4 = 100
前面加0变成0100
“倒置”变成1011
加 1 = 1100 ( -8 + 4 = -4 )
或者:
2^4 - 4 = 10000 - 0100 = 1100
为什么使用补码
因为使用补码,可以把减法改成加法。实际电路中,只有加法器。
减一个数,直接加他的补码