位运算的应用
#include<iostream>
using namespace std;
/*
1111
&1010
=1010
1111
&0101
=0101
一个32位数(31-0)
和1010....与运算会保留奇数位得到x
和0101....与运算会保留偶数位得到y
(x右移一位) 异或 (y左移一位) 得到交换后的结果
*/
int main(){
int a = 9;
int b = a & 0Xaaaaaaaa; //1010 1010 ... 16进制可以写成8个a
int c = a & 0X55555555; //0101 0101 ... 16进制可以写成8个5
int r = ((b >> 1) ^ (c << 1));
cout << r; //r=6
return 0;
}