题目:
给定一个整数,请将其奇数位和偶数位交换,尽可能高效
(比如,第0位和第1位交换,第2位和第3位交换……)
分析:
布尔代数
获取位状态 1 & x = x
设置位状态 0 | x = x
int swapBit(int value)
{
// 提取
int even = value & 0x55555555;
int odd = value & 0x99999999;
//合成
even <<= 1;
odd >>= 1;
return (even | odd);
}