题目描述:
任意给定一个32位整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4
int countOneNum(int n)
{
if(n==0)
{
return 0;
}
int num=0;
while(n)
{
num++;
int m=n-1;
n=n&m;
}
return num;
}
把一个整数减去1之后和原来的整数做位运算,得到的结果相当于是把整数的二进制表示中最右边的一个1变成0