C实现 一个函数返回参数二进制中1的个数(面试题)

来源:互联网 发布:抗氧化 平价精华 知乎 编辑:程序博客网 时间:2024/05/08 00:36

                                 写一个函数返回参数二进制中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.


1 0
原创粉丝点击