原题目:https://leetcode-cn.com/problems/exchange-lcci/
思路:
分别得到奇数位(num&0x55555555)和偶数位(num&0xaaaaaaaa)。然后奇数位右移,偶数位左移,最后加和即可。
代码:
class Solution {
public:
int exchangeBits(int num) {
// 分别得到奇数位,和偶数位。奇数位左移,偶数位右移
return ((num & 0x55555555) << 1) | ((num & 0xaaaaaaaa) >> 1);
}
};