首先,用个简单的方法:
#include <stdio.h>
#include <Windows.h>
#pragma warning(disable:4996)
int get_One(int c)
{
int i = 0;
while (c & 1){
i++;
c >>= 1;
}
printf("%d", i);
}
int main()
{
int c = 0;
printf("请输入一个整数:");
scanf("%d", &c);
get_One(c);
system("pause");
return 0;
}
再用个sao一点的:
#include <stdio.h>
#include <Windows.h>
#pragma warning(disable:4996)
int main()
{
int num = -1;
int i = 0;
int count = 0;
printf("请输入一个整数:");
scanf("%d", &num);
for (i = 0; i < 32; i++)
{
if (((num >> i) & 1) == 1)
count++;
}
printf("%d", count);
system("pause");
return 0;
}
再用个更sao一点的:
#include <stdio.h>
#include <Windows.h>
#pragma warning(disable:4996)
int main()
{
int num = -1;
int i = 0;
int count = 0;
printf("请输入一个整数:");
scanf("%d", &num);
while (num){
count++;
num = num&(num - 1);
}
printf("%d", count);
system("pause");
return 0;
}
OF COURSE!
还有更更sao的,待续……