您的位置:首页 > 其它

关于判断某一个整型值内的1的个数

2009-06-06 12:30 169 查看
int HowMany1 ( int n )
{
int count = 0;
while ( n )
{
n &= n - 1;
count++;
}
return count;
}


n &= n - 1 用于判断 n 是否为 2 的次幂,如是,则 n 为零。

也就是说 n &= n - 1 可以将 n 的最后一位 1 给挑出来,因为减 1 时需要借位。而前面的几位 1 不会受影响。如果操作,直到最后一位 1 被挑出来,n 就为零了。这样,count 判断的就是所有的 1 的个数。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: