如15的二进制中有4个1
-1的二进制中有32个1
size_t 就是unsigned int 意思
1.模2除2
size_t count1(unsigned int n)//用unsigned使负数也能计算
{
int count = 0;
while (n)
{
if (n % 2 == 1)
{
count++;
}
n /= 2;
}
return count;
}
2.右移&1
size_t count1(int n)
{
int i = 0;
int count = 0;
for (i = 0; i < 32; i++)
{
if (((n >> i) & 1) == 1)
{
count++;
}
}
return count;
}
3.n&(n-1)
size_t count_bit_one(int n)
{
int count = 0;
while (n)
{
n = n & (n - 1);//每循环一次少一个1
count++;
}
return count;