我们拿到这样的题目,第一思路可能是进行移位操作,每当移除的位为1时,设定一个变量去统计1的个数,但是这种方法可能相对来说比较麻烦。
大家可以看一下下面这种方法,是不是简单一些:就是一个数不断与自己减1相与,其实功能就是把自己的最低的1位去掉,肯定也必须设定一个变量去统计循环执行的次数,也就是位为1的总数。
-
int fun(int x)
-
{
-
int count = 0;
-
while(x)
-
{
-
x = x&(x-1);
-
count ++;
-
}
-
return count;
-
}
阅读(1277) | 评论(0) | 转发(0) |