配对交换
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ba52358d206a4f59a8c676d67aaf30d6.png)
思路:
当我们看到与二进制位有关时就要联想到位操作符。
一个数字可以写成二进制的形式,也可以写成偶数位二进制与奇数位二进制相加的形式,例如
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/862c1f8e272c4832944a7275ed99c2d1.png)
代码实现:
class Solution {
public:
int exchangeBits(int num) {
int odd = num & 0x55555555;
int even = num & 0xaaaaaaaa;
return (odd << 1) + (even >> 1);
}
};
对位操作符感兴趣可以看看博主的这篇文章:位操作练习题目。