解法一:
int NumOf1(int num)
{
int count = 0;
for(int i = 0;i<31;i++) //控制右移的次数
{
if(num & 1)
{
count++;
}
num = num >> 1;
}
return count;
}
解法二:
int NumOf1(int num)
{
int count = 0;
while(num)
{
count++;
num = num & (num-1);
}
return count;
}
举一反三:把一个整数减去1之后再与原来的整数做与运算,相当于把二进制中的最右边的的一个1变成0,很多二进制方面的问题都可以用这个思路解决。