#include <stdio.h>
/*
* 返回参数中值为1的位的个数
* */
int count_ones(unsigned value)
{
int ones;//用于统计个数
for(ones = 0; value != 0; value = value >> 1)
if(value % 2 != 0)//如果最低位为1,计数增加1
ones = ones + 1;
return ones;
}
int count_ones_ex(unsigned value)
{
int ones;//用于统计个数
for(ones = 0; value != 0; value = value >> 1)
if((value & 1) != 0)//如果最低位为1,计数增加1
ones += 1;
return ones;
}
int main()
{
unsigned int i;
scanf("%u",&i);
int res = count_ones(i);
printf("res = %d\n",res);
}