k=k&(k-1)可以消除k的二进制数的最后一个1.连续进行这个操作,每次消除一个1,直到全部消除为止。操作次数就是1的个数。
int num=0;
cin>>k;
while(k>0)
{
k=k&(k-1);
num++;
}
cout<<num<<endl;
k=k&(k-1)可以消除k的二进制数的最后一个1.连续进行这个操作,每次消除一个1,直到全部消除为止。操作次数就是1的个数。
int num=0;
cin>>k;
while(k>0)
{
k=k&(k-1);
num++;
}
cout<<num<<endl;