您的位置:首页 > 其它

计算无符号整型变量的二进制中的1的个数

2013-06-02 21:08 246 查看
最简单的方法是: 遍历每个位

int bitcount(unsigned int x) {
int b;

for (b = 0; x != 0; x >>= 1)
if (x & 0x1)
++b;
return b;
}

如果知道x&=x-1将会减少x二进制中最右边的1(The C Programming Language, 2nd, ch2.10 Exercise2-9), 则会有另外一种更高效的方法:

int bitcount(unsigned int x) {
int b;

for (b = 0; x != 0; x &= x - 1)
++b;
return b;
}

还可以联想到另外一个问题: 如何判断一个整型变量是2的N次方? (程序员面试宝典, 第二版, ch5.5 例题1)

References:
The C Programming Language, 2nd, Prentice Hall, ch2.10

程序员面试宝典, 第二版, 电子工业出版社, ch5.5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐