补码计算

复习到补码的时候,教程都是说按位取反再加一
但是感觉还是不太明白,经过一番搜索之后算是搞明白了
首先要明白2进制的表示

  • 首位表示正负

以四位二进制举例

1
0=0000  1=0001

简单的加法问题 1+(-1)=0
如果-1=1001,显然1001+0001=10100000
那么计算一下0-1 0000-0001=1111
不就是0001按位取反取反0110,再加1 0111,在最后变符号1111
得出结论

1
0 - 正数 = 负数补码

其中0=(max + 1),这里就是

1
(1111 + 0001) - 正数

将正数与0001替换位置,不就是先按位取反,再加1吗

1
(1111 - 正数) + 0001

参考:
https://www.cnblogs.com/guanjianzhuo/p/6017291.html
https://blog.csdn.net/qq_33391629/article/details/79738814