传送门
1.异或 ^即不同出1
2.取反 ~
3.一些操作
// 获取 a 的第 b 位,最低位编号为 0
int getBit(int a, int b) { return (a >> b) & 1; }
//判断一个数是不是 2 的正整数次幂 看最后一位
bool isPowerOfTwo(int n) { return n > 0 && (n & (n - 1)) == 0; }
//C++ 中还有一些用于位运算的内建函数:
__builtin_popcount(unsigned int n) :计算n的二进制中有多少个 1。
__builtin_parity(unsigned int n) :判断n的二进制中 1 的个数的奇偶性。
__builtin_ffs(unsigned int n) :计算n的二进制末尾最后一个0的位置,位置的编号从 1 开始(最低位编号为 1)。
__builtin_ctz(unsigned int n) :计算 的二进制末尾连续0的个数。
__builtin_clz(unsigned int x) :返回前导0的个数。
函数名末尾添加 ll 来使参数类型变为 unsigned long long