#define _CRT_SECURE_NO_WARNINGS 1
//输入一个整数,输出该整数的32为二进制表示中1的个数
#include <stdio.h>
//第一种方法:
//int numbersof(int num)
//{
// int i = 0, count = 0;
// for (i = 0; i< 32; i++)
// {
// if ((num >> i) & 1)
// {
// count++;
// }
// }
// return count;
//}
//第二种方法:
//n&(n - 1)会消掉n的二进制中一个1
int numbersof(int num)
{
int count = 0;
while (num)
{
count++;
num = num & (num - 1);
}
return count;
}
int main()
{
int num;
scanf("%d", &num);
printf("%d\n", numbersof(num));
return 0;
}
运行结果: