学无先后,达者为师

网站首页 编程语言 正文

C/C++: __builtin_popcount 函数及其一些 __builtin函数

作者:lonely-hermit 更新时间: 2022-05-13 编程语言

__builtin_popcount函数

__builtin_popcount()用于计算一个 32 位无符号整数有多少个位为1

GCC有一个叫做__builtin_popcount的内建函数,它可以精确的计算1的个数。尽管如此,不同于__builtin_ctz,它并没有被 翻译成一个硬件指令(至少在x86上不是)。相反的,它使用基于表的方法来进行位搜索。这无疑很高效并且非常方便。

这个函数主要是我在刷题的过程中发现答案中这样判断的,我之前的判断方式一直是自己写一个函数,这种内建的库函数无疑更加高效

int ans=0;
while(x){
	ans += x & 1;
	x >> 1;
}

其他的__builtin函数

返回x xx的最后一位1 11是从后向前第几位

__builtin_ffs(x)

返回x xx的二进制下前导的0 00的个数

__builtin_clz(x)

返回x xx的二进制下末尾的0 00的个数

__builtin_ctz(x)

返回x xx的二进制下1 11的个数

__builtin_popcount(x)

返回x xx的二进制下1 11的个数的奇偶性

__builtin_parity(x)

原文链接:https://blog.csdn.net/weixin_43903639/article/details/123977121

栏目分类
最近更新