gcc 中有一个叫做__builtin_popcount的内建函数,作用是就算一个数的二进制表示中有多少位是1。它使用一张基于表的方法来进行位搜索,因此这个操作的执行效率很高。
其他计算bitcount 的方法
int bitCount(int n)
{
int count = 0;
while(n)
{
// 删除n 的二进制表示中最后一个1
// 也可以用来判断n是不是2的整数幂
n &= (n - 1);
++count;
}
return count;
}