异或

1 C/C++中异或的运算符号

int c = a ^ b;

2 异或运算结果

下面的0与1都是二进制

0 ^ 0 = 0

0 ^ 1 = 1

1 ^ 0 = 1

1 ^ 1 = 0

即相同为0;不同为1。

3 异或的妙用

任意数与自己异或得0:aa=0

任意数与0异或得任意数:b0=b

异或满足交换律与结合律:aba=baa=b(aa)=b0=b。

4 用异或和与可以做加法运算

1)两个数先异或得到一个中间值temp1;然后两个数与一下并左移一位得到temp2;

2)判断temp1&temp2 == 0

3)若不等于0,重复1、2

4)否则执行temp1^temp2,得到结果。

参考

只出现一次的数字

https://leetcode-cn.com/problems/single-number/solution/zhi-chu-xian-yi-ci-de-shu-zi-by-leetcode-solution/

 

posted on 2020-06-25 17:37  辉哥54110  阅读(418)  评论(0编辑  收藏  举报