程序
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 |
swap交换数值
阅读 50
2022-03-11
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 |
相关推荐
精彩评论(0)