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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值