寫一個宏定義,實現功能是將一個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;
}
運行結果: