问题描述
请实现一个函数,输入一个整数, 输出该数的二进制表示中1的个数。例:9的二进制为1001,有2位是1
方法论
算法1:
1、在我们的机器上,int数据类型是32位;
2、因此,我们将1从最低位一直移动到最高位,并将每一位与输出的数值a 做与运算
3、如果a对应位是1,则将计数器 cnt+1,最终 cnt 就是该整数二进制数中1的个数。
算法2:保持1不变,移位数字a,和1做与运算
算法3:干掉每一位上的 1
将是a与a-1做与运算,那么最低位的 1 就干掉了,最低位的1就为0
循环遍历,直到a为0,次数就是1的个数
参考代码及详细说明
#include<stdio.h>
int main