程序员面试金典 5.7

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);
    }
};
发布了194 篇原创文章 · 获赞 2 · 访问量 7723

猜你喜欢

转载自blog.csdn.net/RayoNicks/article/details/105407464