程序
void swap(int &a, int &b)
{
a ^= b;//异或
b ^= a;
a ^= b;
}
逻辑
- 找出
a
和b
中不同的位,赋1 b
中不同的位:与1异或取反,与0异或还是本身- 此时
b
是原来的a
。a中不同的位:与1异或取反,与0异或还是本身
num1 | num2 | res |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
微信扫一扫
void swap(int &a, int &b)
{
a ^= b;//异或
b ^= a;
a ^= b;
}
a
和b
中不同的位,赋1b
中不同的位:与1异或取反,与0异或还是本身b
是原来的a
。a中不同的位:与1异或取反,与0异或还是本身num1 | num2 | res |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
相关推荐