//第一种方法
int main()
{
int n = 0;
int cont = 0;
int i = 0;
scanf("%d", &n);
for (i = 0; i < 32; i++)
{
if (((n >> i) & 1) == 1)
cont++;
}
printf("%d\n", cont);
system("pause");
return 0;
}
//第二种方法
int main()
{
int n = 0;
int cont = 0;
scanf("%d", &n);
//返回二进制1的个数是补码中1的个数
//n 11 补码 1011
// n-1 1010
//n=n&(n-1) 1010
// n-1 1001
//n=n&(n-1) 1000
//n-1 0111
//n=n&(n-1) 0000 循环一次 消掉一个1 那么循环几次 就有多少个1
while (n)
{
n = n&(n - 1);
cont++;
}
printf("%d\n", cont);
system("pause");
return 0;
}
int main()
{
int n = 0;
int cont = 0;
int i = 0;
scanf("%d", &n);
for (i = 0; i < 32; i++)
{
if (((n >> i) & 1) == 1)
cont++;
}
printf("%d\n", cont);
system("pause");
return 0;
}
//第二种方法
int main()
{
int n = 0;
int cont = 0;
scanf("%d", &n);
//返回二进制1的个数是补码中1的个数
//n 11 补码 1011
// n-1 1010
//n=n&(n-1) 1010
// n-1 1001
//n=n&(n-1) 1000
//n-1 0111
//n=n&(n-1) 0000 循环一次 消掉一个1 那么循环几次 就有多少个1
while (n)
{
n = n&(n - 1);
cont++;
}
printf("%d\n", cont);
system("pause");
return 0;
}