写一个宏定义,实现功能是将一个int型的数奇偶位互换,例如6的二进制是0110,第一位与第二位互换,第三位与第四位互换得到1001,输出应该是9
#define SWAP(N)(((N&0x55555555)<<1)|((N&0xaaaaaaaa)>>1))
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("%u\n", SWAP(6));
printf("%u\n", SWAP(20));
printf("%u\n", SWAP(64));
printf("%u\n", SWAP(0));
system("pause");
return 0;
}
运行结果: