#include <stdio.h>
int main(int argc, const char *argv[])
{
unsigned int a = 0xaaaaaaaa;
//交换相邻的位
a = ((a & 0xaaaaaaaa)>>1) | ((a & 0x55555555)<<1);
//交换相邻的两位
a = ((a & 0xcccccccc)>>2) | ((a & 0x33333333)<<2);
//交换相邻的四位
a = ((a & 0xf0f0f0f0)>>4) | ((a & 0x0f0f0f0f)<<4);
//交换相邻的八位
a = ((a & 0xff00ff00)>>8) | ((a & 0x00ff00ff)<<8);
//交换相邻的十六位
a = ((a >>16) | (a <<16));
printf("change bit a = %#x\n",a);
return 0;
}