int bitcount(unsigned int n)
{
unsigned int tmp;
tmp = n - ((n >> 1) & 033333333333)
- ((n >> 2) & 011111111111);
return ((tmp + (tmp >> 3)) & 030707070707)%63;
}
虽然不知道怎么个意思,留着吧,只有膜拜的份.
计算一个字中1的个数(MIT牛人算法)
本文提供了一个使用位操作实现的整数中1的个数计算函数。通过一系列位移和按位与运算,该函数能够高效地计算出任意无符号整数中1的个数。

被折叠的 条评论
为什么被折叠?



