先来复习一下&,|,^,~这四个位运算符号吧!
(与)&: 0&0=0 1&0=0 0&1=0 1&1=1
(或)|: 0|0=0 1|0=1 0|1=1 1|1=1
(异或)^: 0^0=0 1^0=1 0^1=1 1^1=0
(取反)~: ~1=0 ~0=1
分析:
8的二进制是1000,7的二进制是0111
8^7 = 1000^0111 = 1111 = 15
15^7 = 1111^0111 = 1000 = 8
可以看到,一个数异或两次就是它本身
交换代码的实现
void Swap(int &a, int &b){
if (a != b){
a ^= b;
b ^= a;
a ^= b;
}
}
标签:0111,两个,int,交换,1111,异或,15,1000 From: https://www.cnblogs.com/Yukie/p/17927342.html