本文里主要会通过三种方法解决该问题:
1.除二取1,计数器加一
2.按位与1
3.按位与其减一
从易到难,读者可以自行阅读
1.利用二进制求法中的基本原理
我们可以看到计算11的二进制先计算11/2作为下一个被除数,再计算11%2我们知道一个数摸2的结果只有可能是0或者1,如果是1,则计数器加一这是一次计算,接下来再以11/5的结果作为下一次计算,重复上述步骤即可
#include <stdio.h>
int count_1(int a) {
int count = 0;//定义一个计数器变量,a%2==1成立count++
while (a) {
if (a % 2 == 1)
count++;
a = a / 2;
}//只有当a/2不为0是其结束条件
return count;
}
int main()
{
int num = 0,sum=0;
scanf_s("%d", &num);