不用临时变量交换两个数

2019-03-30  本文已影响0人  yunie
swap(int& a, int& b) { 
  a = a ^ b;
  b = a ^ b;
  a = a ^ b;
}

原理分析:
假定a = 5, b = 3,他们的二进制表示如下

0000 0101   a
0000 0011   b
0000 0101  a
0000 0011  b  
#经过异或得到合集
0000 0110  a
0000 0110  合集a
0000 0011  b
#再次经过异或得到合集
0000 0101  得到合集中的存放的a赋值给b
0000 0110  合集a
0000 0101  新b
#第三次异或 
0000 0011  得到合集中存放b的赋值给a
上一篇下一篇

猜你喜欢

热点阅读