补码的简单理解
在计算机里面,数据的加减是通过补码的形式来运算的
这里我先不用二进制的方式讲解,而是用我们常见的十进制来理解补码:
假如现在有一个数字6,想要减去2, 正常做法是:6-2=4
现在我们来还一种思路,6减去2可以理解成什么?
现在假设有一个带刻度的圆盘A,A的12点位置写上“9”,其他位置均匀地写上1,2,3...
在6的位置上方一个小石子。
那么6减去2可以理解成:小石子往后退两位,放到“4”的位置
那如果我偏要前进呢,前进多少个可以轮回到“4”的位置呢?
想象一下就知道,向前走7位也能到“4”的位置,这个7就是2在这个规则下的补码
于是6-2可以用6+7来表示,好神奇哇?
也就是,4等价13,5等价14,6等价15,有规律了把
4就是13的个位数+1
5就是14的个位数+1...
剩下的就自己理解咯;;;
对应于二进制也是一样的原理啦
一个负数的补码就是这个数的绝对值的二进制的每个位取反加一
其实取反后本质上就是真正意义上的补码(我自己的理解),因为取反后的二进制和取反前的 相加刚好等于0, 不就很“补”了吗,加一是为了扔调最前面的进位,就像前面的圆盘,不要了十位数