假设此处有一个32位的变量uint32 a,需要实现第16bit位和17bit位交换操作,可以这样操作
uint32 a;
if((a & 0x8000) == (a & 0x10000) || (a & 10000) == (a & 8000)*2)
//判断16bit位和17bit位是否相等,若相等则无需交换
//0x8000即1000 0000 0000 0000
//0x10000即0001 0000 0000 0000 0000
{
printf("%d",a);
}
else
//16bit位和17bit位不相等,执行交换操作
{
a = a^(0x18000);
printf("%d",a);
}