#include <stdio.h>
int binaryNum(int x)
{
int count = 0;
while( x )
{
count ++;
x = x & (x - 1);
}
return count;
}
int main(void)
{
printf("%d\n",binaryNum(9999999));
return 0;
}
打印的结果是14,表明9999999二进制有14个1.
方法二:
#include <stdio.h>
int binaryNum(int x)
{
int count = 0;
while( x )
{
if(x & 1)
{
count ++;
}
x = x >> 1;
}
return count;
}
int main(void)
{
printf("%d\n",binaryNum(9999999));
return 0;
}
int bitcount(unsigned x)
{
int b;
for( b= 0 ; 0 != x ; x >>= 1 )
{
if( x & 01 )
{
b ++;
}
}
return b;
}
本文介绍两种计算整数二进制表示中1的位数的方法。第一种方法通过不断移除最低位的1并计数,直至整数变为0;第二种方法检查每一位是否为1,然后右移直至所有位被检查。这两种方法适用于C/C++程序员学习位操作技巧。

被折叠的 条评论
为什么被折叠?



