在这里记录一些不常见的位运算使用。持续更新。
1.求余运算
例如:int c = a % b
int c = a & (b - 1);
2.判断int或long long中是否有一个字节为0(from glibc)
以四字节为例:
unsigned long int himagic = 0x80808080; //10000000 10000000 10000000 10000000
unsigned long int lomagic = 0x01010101; //00000001 00000001 00000001 00000001
if(((n - lomagic) & ~n & himagic) != 0){...}