写一个函数返回参数二进制中1的个数
总共有三种方法,逐步优化。。。
方法1、
#include<stdio.h>
int main()
{
int num = 11;
int count_one_bits(int num);
int count = 0;
while(num)
{
if(num%2 == 1)
count++;
num = num/2;//二进制向右移一位
}
printf("count=%d\n",count);
return 0;
}
方法2、
#include<stdio.h>
int main()
{
int num=11;
int count_one_bits(int num);
int count=0;
{
int i=0;
for (i=0; i<32; i++)
{
if(num&1 == 1)
count++;
num = num>>1;//二进制向右移一位
}
}
printf("count=%d\n",count);
return 0;
}
方法三、
#include<stdio.h>
int main()
{
int num=11;
int count_one_bits(int num);
int count=0;
{
while(num)
{
count++;
num = num&(num-1);
}
}
printf("count=%d\n",count);
return 0;
}
此题方法三还可以延伸另一道面试题,下次解读。。
题目如下,大家可以先思考:
判断一个数是不是2^n.