求二进制数中1的个数

编程之美中的一道题,有一个解法想不明白
该算法只考虑1的个数
代码如下:
intCount(BYTEv)
{
intnum=0;
while(v)
{
v&=(v-1);
num++;
}
returnnum;
}
在网上看了一下都只是把算法给出来都没有解释,哪位同学帮忙解释一下,想不明白.多谢
有只小跳蛙
浏览 318回答 2
2回答

慕码人8056858

其实就是简单的位运算啊,给你写个更好理解的#include#includeintmain(void){intn,count;while(scanf("%d",&n)!=EOF){count=0;while(n){if(n&1)count++;n>>=1;}printf("%d\n",count);}return0;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript