关于C语言的,这是求二进制中1的个数的函数,哪位高手说一下每一句的含义!

intBitCount(unsignedintn){unsignedintc=0;while(n>0){if((n&1)==1)++c;n>>=1;}returnc;}... int BitCount(unsigned int n)
{
unsigned int c = 0 ;
while (n > 0)
{
if((n & 1) == 1)
++c ;
n >>= 1 ;
}
return c ;
}
展开
 我来答
洋谷梦0Fa
2012-12-11 · TA获得超过1818个赞
知道小有建树答主
回答量:937
采纳率:0%
帮助的人:701万
展开全部
c是记录1的数量的变量。n&1是把n与二进制的1按位与,如果结果是1就让c加1(就是c++这一句),n>>=1是把n按二进制右移一位。不断循环,直到n==0的时候跳出while循环,返回c的值。好久不用C了,有不准确的地方请见谅。
shenjian9619
2016-06-03 · TA获得超过1537个赞
知道小有建树答主
回答量:1007
采纳率:50%
帮助的人:570万
展开全部

没看到代码  现写一个

int a,count=0;
<!-- 给a赋一个值, 过程略过-->
while (a)   //当a不等于0时进行循环
{
    if (a&1)   //如果a&1的结果不是0   即a的二进制最后一位是1
        count++;        //计数器+1  
    a>>=1;      //a的二进制整体向右移一位   之前的倒数第二位变成最后一位
}
printf("the number of /'1/' in binary is %d\n",count);
return 0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友26ad406
2012-12-11 · TA获得超过1611个赞
知道大有可为答主
回答量:1506
采纳率:100%
帮助的人:1077万
展开全部
int BitCount(unsigned int n)
{
unsigned int c = 0 ;
while (n > 0)
{
if((n & 1) == 1)//判断最后一位是不是1
++c ;//如果是加一
n >>= 1 ; //右移一位直到n=0
}
return c ;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式