面试题10;二进制中1 的个数
题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数,例如把9表示成1001,有2位是1。因此如果输入9,该函数输出2.
如果使用除法效率会很低,因此我们使用位运算。
代码如下:
#include<stdio.h>
int NumberFind1(int n)
{
int count=0;
while(n)
{
if(n & 1)
{
count ++;
}
n=n >> 1;
}
return count;
}
int main()
{
int n=9;
int a=NumberFind1(n);
printf("%d \n",a);
return 0;
}
执行结果如下: