#include <stdio.h>
int func(char ch)
{
int i;
int n=0;
for(i=0;i<8;i++)
{
if((ch>>i)&1==1)
{
n++;
}
}
return n;
}
int main()
{
char ch;
scanf("%c",&ch);
int n = func(ch);
printf("%d\n",n);
return 0;
}
首先我们知道在内存里面所有的东西都是由0,1组成的,一个字符里面有8个字节,所有有个外循环8次;
每次对ch右移i个位置并与1取&,如果结果为1证明当前位置的最低位是1,令计数的n++就能得到最终需要的1的个数。