借鉴:https://blog.csdn.net/wenok147/article/details/84036856
大家都应该知道在内存中,最高位表示符号位,0表示正,1表示负
8 = 0000 1000 -8 = 1000 1000 8 + 4 = 0000 1000 + 0000 0100 = 0000 1100 = 12 8 - 4 = 0000 1000 + 1000 0100 = 1000 1100 = -12
上面我们可以看到计算机在算加法的时候利用原码进行加法操作就是不可行的,所以为了避免,计算机内存中的所以存储和计算都是用补码进行操作的
原码:即是其二进制表现形式
反码:1、正数的反码和原码相同
2、负数的反码是符号位不变,其余位按位取反
补码:1、正数的补码和原码相同
2、负数的补码是反码+1
于是上面的问题就解决了
-4 = 1000 0100 补码:1111 1100 8 - 4 = 0000 1000 + 1111 1100 = 1000 0100 = 4