用宏定义完成整数的二进制位的奇偶位互换

代码如下:

#include 
#define SWAP(num) (((num & 0xAAAAAAAA) >> 1) | ((num & 0x55555555) << 1))


int main() {
    int num = 1010;
    printf("%d\n", num);
    printf("%d\n", SWAP(num));
    return 0;
}

思路如下:取出所有的奇数位,左移(最高位会被顶替,最低为会补0),取出所有偶数位,右移(最低位会被顶替,最高为会补0)

如图:用宏定义完成整数的二进制位的奇偶位互换_第1张图片

 将二者 | 操作,因为每一步都将不需要的位置为了0,所以用 | 操作 

你可能感兴趣的:(算法,前端,c++)