我们知道,整型数字在内存中都是以二进制形式进行存储。
要统计二进制中1的个数,我们可以用以下两个方法实现:
都是通过位操作符来实现的。
方法一:
#include<stdio.h>
int main()
{
int num = 0;
printf("请输入:");
scanf("%d", &num);
int count = 0;
while (num)
{
count++;
num = num & (num - 1);
}
printf("二进制中1的个数:%d\n", count);
return 0;
}
方法二:
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
printf("请输入:a,b\n");
scanf("%d %d", &a, &b);
int i = 0;
int c = a ^ b;
int count = 0;
for (i= 0; i < 32; i++)
{
if (((c >> i) & 1) == 1)
count++;
}
printf("%d", count);
return 0;
}