我们知道写出补码的一般方法是
1. 将一个数化为2进制
2. 除了符号位按位取反得到反码
3. 反码基础上+1
但是在8位情况下-128的补码却是1000 0000
用上述方法得不到正确的解,
先给出一个更通用的解
[X]补=0+X
[
X
]
补
=
0
+
X
其中0的个数由所求位数决定
例如:在8位字长下求-128的补码
就是
[−128]补=8个0+(−128)=8个0−128
[
−
128
]
补
=
8
个
0
+
(
−
128
)
=
8
个
0
−
128
1000 0000 就是-128对应的补码
128补=0+128=128
128
补
=
0
+
128
=
128
可以验证 正数的补码用此公式就是其本身
进一步可以得出一个公式
[X]补=2n−X,X<0
[
X
]
补
=
2
n
−
X
,
X
<
0
[X]补=X,X>=0
[
X
]
补
=
X
,
X
>=
0
n
n
为字长
例如 在字长为8的情况下
即 1111 1111