您的位置:首页 > 其它

位操作_求二进制中1的个数

2015-09-28 09:45 239 查看

以下是求x中二进制1的个数的两种方法,第一种是比较常规的逻辑进行循环移位直至为0结束。第二种效率更高些,不需要循环移位,每次只去掉x中的最后一位。(x&(x-1)可实现去除掉最后一位1。另外如果数中1的个数只有一个,那么这个数是2的n次方。)

uint8_t Bit1Count_A(unsigned long x)
{
uint8_t count = 0;

while(x) {
if ((x & 1) == 1)
count++;
x >>= 1;
}

return count;
}

uint8_t Bit1Count_B(unsigned long x)
{
uint8_t count = 0;

while(x) {
x &= (x-1);
count++;
}

return count;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  位操作