OI WiKi 位运算

传送门

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

发布了20 篇原创文章 · 获赞 2 · 访问量 249

猜你喜欢

转载自blog.csdn.net/weixin_45535964/article/details/105458586
OI