方法一
本代码使用了"位操作"的方法来计算一个整数的二进制表示中包含多少个 1。
具体来说,程序通过不断将整数除以 2,并判断余数是否为 1 的方式,逐位判断整数的二进制表示中每一位是否为 1,从而统计出整数中包含多少个 1。
#include<stdio.h>
int main()
{
int num = 10;
int count = 0;
while (num)
{
if (num % 2 == 1)
{
count++;
}
num = num / 2;
}
printf("二进制中1的个数 = %d\n", count);
return 0;
}
方法二
本代码同样使用了"位操作"的方法来计算一个整数的二进制表示中包含多少个 1。
具体来说,程序通过一个 for 循环逐位右移整数 num,并与 1 进行按位与(&)操作,从而判断整数的二进制表示中每一位是否为 1,并统计出整数中包含多少个 1。
#include<stdio.h>
int main()
{
int num = -1;
int count = 0;
for (int i = 0; i < 32; i++)
{
if (((num >> i) & 1) == 1)
{
count++;
}
}
printf("二进制中1的个数 = %d\n", count);
return 0;
}
方法三
本代码使用逐个消去最后一位的 1 的方法。
#include <stdio.h>
int main()
{
int num = -1;
int i = 0;
int count = 0;//计数
while(num)
{
num = num&(num-1);
count++;
}
printf("二进制中1的个数 = %d\n",count);
return 0;
}