将一个数中的偶数位bit和奇数位bit交换
如:21(010101) 变为 42(101010)
方法:
用0xaaaaaaaa提取出偶数位,右移一位
用0x55555555提取出奇数位,左移一位
将上诉两个操作的结果进行位或操作
简单代码:
int SwapOddEvenBits(int n)
{
return ((n&0xaaaaaaaa)>>1) | ((n&0x55555555)<<1);
}
测试用例:
int N = 21;
cout<<"Swap Odd and Even Bits : "<<SwapOddEvenBits(N)<<endl;