其实这应该是一个面试题当中抽取出来的,网上也有很多的方法来实现,我这里抽取了其中的一种并且做了代码实现。
代码实现如下:
#include <stdio.h>
int main(){
int input;
int flag = 1;
int count = 0;
scanf("%d",&input);
printf("input is %d\n", input);
while(flag){
if(input & flag){
count++;
}
flag <<= 1;
}
printf("the number has %d 1 in binary mode.\n", count);
return 0;
}
其中,input是输入的值,flag是很重要的一个元素,设置初始值flag=1,那么我们拿flag和input做一个与运算的话,就可以判断input当中的最低位是否为1.然后依次对flag做一个循环左移运算,就可以求出整个input当中会有多少个1.