问题描述:
#include<iostream>
using namespace std;
/******************************************
求解思路:val=val-1在最低位+1,每次相&就是清零一个1.每次都从最低位开始计算1的个数.
*******************************************/
int getInt1Num(int val)
{
int n= 0;
while(val){
val &= (val-1);
n++;
}
return n;
}
int main(int argc,char *argv[])
{
int val = 0;
cin>>val;
cout<<getInt1Num(val)<<endl;
}