.写一个函数返回二进制参数值为1的个数

来源:互联网 发布:5g网络概念股龙头 编辑:程序博客网 时间:2024/04/27 04:21

                                                  写一个函数返回二进制参数值为1的个数

例如:15    0000 1111     返回4个1
程序原型:int count one bits(unsigned int value)
{
//返回1的位数
}
解答:

#include<stdio.h> int count_one_bits(unsigned int value) { int count=0;//必须进行初始化,要不就是系统自由给这个变量赋随机值 while(value)//当value>0,进入循环即while(value>0) { if(value%2==1) //数模2,可以取最低位 例如:1111%2=1count++;value=value/2; //数除2,可以消除低位 例如:1111/2=111 ,等价于value/=2; } return count; }//x&(x-1)即是把x 最后一个是1的二进制位变为0(以下是函数另一种实现方法) int count_one_bits(usigned int value) { int count=0; while(value) {count++; //将count++语句置于下端语句之上为了计数 0001&0000=0000 value=value &(value-1);} return count; }     int main(){ printf("%d\n",count_one_bits(15)); return 0;} //对于上面问题的另一种解法:#include<stdio.h>int bit_number(int  n){int count=0;for(n;n!=0;n >>= 1)//通过移位将数字变为0{if(n & 1){count++;}}return count;}int main(){printf("%d\n",bit_number( 15));return 0;}



0 0
原创粉丝点击