【C语言】编写一个函数返回参数二进制中1的个数。

来源:互联网 发布:淘宝四钻店铺转让 编辑:程序博客网 时间:2024/04/30 10:47

编写一个函数返回参数二进制中1的个数。自己写了一下,觉得挺有意思,总结了3个方法 :
第一种方法:

#include<stdio.h>int main(){    int num = 10;//10的二进制位1010    int count = 0;    while (num != 0)    {        num = num&(num - 1);//(1)1010&1001=1000;1000&0111=0000        count++;count    }    printf("1的个数:%d\n", count);    system("pause");    return 0;}

总结:每一次按位与都将少一个二进制中的1
第二种方法:

#include<stdio.h>    int main(){    int num =10;    int count = 0;    int i = 0;    for (i = 0; i < 32; i++)//将该数右移32次,每一次与1按位与    {        if ((num>>i)&1 == 1)//若该位为1,结果为1,count+1            count++;    }    printf("1的个数%d\n", count);    system("pause");    return 0;}第三种方法:#include<stdio.h>int main(){    int num = 10;    int count = 0;    while (num)    {        if (num % 2 == 1)//模2求余法            count++;        num = num / 2;    }    printf("1的个数=%d\n", count);    system("pause");    return 0;}
1 0
原创粉丝点击