利用i&(i-1)进行判断,很标准的解法:
#include<iostream>
using namespace std;
int main()
{
int num,count;
cin>>num;
count=0;
while(num)
{
num=num&(num-1);
count++;
}
cout<<count<<endl;
return 0;
}
结论:本题被大神整理过有很多很好的解法,在此给出链接 http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html