Pairwise Swap:使用尽可能少的代码实现一个整数中相邻的奇数比特位和偶数比特位的交换,第0
位和第1
位交换,第2
位和第3
位交换,等等。
如果依次交换每对比特位,不仅写起来很麻烦,而且效率也没有那么高,所以我们应该将所有奇数比特位整体向右移动1
位,并将所有偶数比特位整体向左移动1
位。在实现时,还需要注意右移操作高位需要补0
。
class Solution {
public:
int exchangeBits(int num) {
unsigned int n = num;
return ((n & 0xAAAAAAAA) >> 1) | ((n & 0x55555555) << 1);
}
};