欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

写一个宏可以将一个数字的奇数位和偶数位交换

程序员文章站 2024-03-22 10:06:58
...

步骤:取出二进制数的奇数位和偶数位;奇数位右移,偶数位左移。
1&1=1,0&1=1,如果想清除奇数位,那么与一个奇数位为0,偶数位为1的数,即:
01010101010101010101010101010101,也可以写为八进制为0xaaaaaaaa。清除偶数位也是同样的方法。

#include<stdio.h>
#define SWAPBIT(m) ((m&0xaaaaaaaa)>>1)+((m&0x55555555)<<1)//得到奇数位右移,偶数位左移
int main()
{
    int n = 10;
    int ret = SWAPBIT(n);
    printf("%d\n", ret);
    return 0;
}

写一个宏可以将一个数字的奇数位和偶数位交换

相关标签: 二进制