Press "Enter" to skip to content

位运算的奇技淫巧

在这里记录一些不常见的位运算使用。持续更新。

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){...}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注