这是一个求二进制里有多少个1的算法,复杂度很平均,用的少量数学知识,这里贴个出处:https://blog.csdn.net/msquare/article/details/4536388
这篇文章条理清晰,讲得非常不错,下面只贴最后结论代码供自己使用,详情请看上面链接,认真看一定能懂。
int bitcount(unsigned int n)
{
unsigned int tmp;
tmp = n
- ((n >> 1) & 033333333333)
- ((n >> 2) & 011111111111);
tmp = (tmp + (tmp >> 3)) & 030707070707
return (tmp%63);
}