正数与负数的异或操作(涉及补码)
首先异或操作是对每一位都进行异或(相同为0,不同为1),但需要先把数转换成补码才行。
1、正数的补码即本身
2、负数的补码为各位取反然后加1(最高为保持为1不变)
以-2的一个字节为例
原码: 1000 0010
反码: 1111 1101
补码: 1111 1110
3、将两数的补码按位进行异或
以 3 ^ (-2)为例
3 的补码:0000 0011
-2的补码:1111 1110
异或: 1111 1101 此为结果的补码,然后要反过来计算原码
由 原码 -> 取反 -> +1 补码 得 补码 -1 -> 取反 -> 原码
补码: 1111 1101
-1 : 1111 1100
原码: 1000 0011
即结果为 -3