问题描述:写一个宏可以将一个数字的奇数位和偶数位交换。
思路:交换数字的奇偶位是学习C语言中比较常见的问题,最简单的方法就是将第0位与第1位交换,第2位与第3位……依此类推。
#include<stdio.h>
#define CHANGE(X) \
((X & (0x55555555))<<1)|((X & (0xAAAAAAAA))>>1)
//奇数位左移,偶数位右移
int main()
{
int x=10;
printf("%d\n",CHANGE(x));
system("pause");
return 0;
}
结果:5
10 ->1010
5 -> 0101