关于__builtin_系列函数学习笔记

  • 简要介绍:__builtin_系列函数是GCC自带的位运算系列的函数,比较黑科技,有些OJ不支持使用
  • 记一些常用函数
__builtin_popcount(x)//返回x的二进制下1的个数
__builtin_ffs(x)//返回x的二进制下第一位1的位置(从1开始)
__builtin_clz(x)//返回x二进制下最高有效位到最高位的1上一位的长度(即最高位开始连续0的个数)
__builtin_ctz(x)//与上一个函数相反,返回x的二进制下最低位开始连续0的个数(即__builtin_ffs(x)-1)
__builtin_parity(x)//返回x二进制下1的个数的奇偶性
  • 以上的返回类型都是unsigned int,只要在函数名后面加上ll,即可返回unsigned long longe.g.:__builtin_popcountll(x)

  • 其他:用如下指令可以将__builtin_popcount被编译器识别为一条指令,加快运行速度。

#pragma GCC target ("popcnt")

发表评论

电子邮件地址不会被公开。 必填项已用*标注