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

#define SWAP(x)(((x&(0x55555555))<<1)|((x&(0xAAAAAAAA))>>1))
#include<stdio.h>
int main()
{
 int x = 5;
 printf("奇偶交换:%d\n", SWAP(x));
 system("pause");
 return 0;
}

运行结果:
写一个宏可以将一个数字的奇数位和偶数位交换