9.18 位运算(上)
位运算应用场合
特殊算法
嵌入式
位运算符
操作 | 运算符 |
---|---|
取反 | ~ |
左移 | << |
右移 | >> |
与 | & |
异或 | ^ |
或 | \ |
经典用法
- 高低位互换
int main2(void)
{
printf("%X\n",0xAABB);
printf("%X\n",0xAABB>>8 | 0xAABB<<8 & 0xFF00);
//从右向左
return 0;
}
- mask & (mask - 1)
2的整数次幂
int main3(void)
{
int m = 4;
if((m&(m-1)) == 0)
printf("%d is power of 2\n",m);
else
printf("%d isn't power of 2\n",m);
return 0;
}
- 加密
异或加密
int main4(void)
{
int passwd = 0x12345678;
passwd = passwd ^ 0x2018;
printf("passwd:%X\n",passwd);
passwd = passwd ^ 0x2018;
printf("passwd:%X\n",passwd);
return 0;
}
- 函数无参交换
void swap(int *a,int *b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}