问题遇到的现象和发生背景
用按位与求解输入一个整数,输出此数字二进制中1的个数
问题相关代码,请勿粘贴截图
#include<stdio.h>
int fx(int a){
int count=0;
//for(int i=0;i<32;i++){
//if((a&(1<<i))==1){
//count++;
for(int i=0;i<32;i++){
if(((a>>i)&1)==1){ //把输入的数二进制左移i位,按位与 1
count++;
}
}
return count;
}
int main(){
int num;
scanf("%d",&num);
printf("二进制中1的个数为%d",fx(num));
return 0;
}
运行结果及报错内容
代码运行正常
我的解答思路和尝试过的方法
把输入的整数右移 做和1 按位与就正常 但是注释掉内容:把1左移按位与此整数 运行结果不正确
我想要达到的结果
求讲讲。