奇技淫巧之位运算

(引自某位大佬的洛谷博客

  • __builtin_ffs(x) 返回x的二进制下第一位1的位置(从1开始)
  • __builtin_clz(x) 返回x二进制下最高有效位到最高位的1上一位的长度(即最高位开始连续0的个数)
  • __builtin_ctz(x) 与上一个函数相反,返回x的二进制下最低位开始连续0的个数(即第一个函数 - 1)
  • __builtin_parity(x) 返回x二进制下1的个数的奇偶性
  • __builtin_popcount(x) 返回x二进制下1的个数

以上函数的唯一参数都为unsigned int类型,并且都有unsigned long long版本,即在函数名后面加上ll,比如 __builtin_popcountll(x)

对于其他的__builtin_系列函数,可以自行查阅GNU C所提供的文档。

另外如果在程序开头加上这么一句话

#pragma GCC target ("popcnt")

可以加快运算速度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值