1、求二进制中1的个数
int bitcount(int x)
{
return x==0?x:bitcount(x>>1)+(x&1);
}
以上算法运算的次数为二进制数的位数
要计算 1 的个数,若让算法的运算次数只与“ 1 ”的个数有关,那复杂度就能进一步降低。
思想: x & (x-1) 可以消去 x 二进制数的最后一位 1
程序代码:
int bitcount(int x)
{
int cnt = 0;
while(x)
{
x&=(x-1);
cnt++;
}
return cnt;
}
参考资料: 点击打开链接