位操作_求二进制中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;
}
相关文章推荐
- C/C++位操作实例总结
- C++位操作的常见用法小结
- golang 位操作
- 位操作实现四则运算
- 位操作实现加法
- 用+,-,移位实现除法运算
- 【LeetCode】Single Number II
- leetcode:Divide Two Integers菜鸟解法
- 联合体+位域,实现位操作,并可以整体读出
- Codility -- PermMissingElem
- [leetcode 190]Reverse Bits
- [leetcode 191]Number of 1 Bits
- Leetcode:Repeated DNA Sequences
- 《编程之美》读书笔记(二)——二进制数中“1”的个数
- Java 快速交换 位操作的应用
- Oj2-重复数字中寻找破坏重复次数的那个
- leetcode#136 Single Number
- python核心编程第八章习题答案(2)
- [Leetcode] Single Number I | Single Number II
- 不用比较运算符比较两个数的大小