[leetcode]: 191. Number of 1 Bits
2017-05-21 20:12
351 查看
1.题目
Write a function that takes an unsigned integer and returns the number of ’1’ bits it has (also known as the Hamming weight).For example, the 32-bit integer ’11’ has binary representation 00000000000000000000000000001011, so the function should return 3.
给一个非负整数,求其二进制表示中一共有多少个1.
2.分析
3种方法:1) n&1,n>>1 此方法只适用于非负整数的情况。如果出现负数,会死循环
2)m=1,n&m,m<<1 对m进行移位来检测每一位是否为1
3)n=n&(n-1) 每次把最低位的1置为0
3.代码
class Solution { public: //方法2 int hammingWeight_2(uint32_t n) { int count=0; int flag=1; while(flag){ if(flag&n) ++count; flag=flag<<1; } return count; } //方法3 int hammingWeight_3(uint32_t n) { int count=0; while(n){ n=n&(n-1); ++count; } return count; } };
相关文章推荐
- Leetcode 191. Number of 1 Bits
- LeetCode 191. Number of 1 Bits
- LeetCode 191. Number of 1 Bits
- leetcode 记录 191. Number of 1 Bits
- LeetCode 191. Number of 1 Bits
- leetcode No191. Number of 1 Bits
- [LeetCode]191. Number of 1 Bits
- 【leetcode】191. Number of 1 Bits
- leetcode 190. Reverse Bits 191. Number of 1 Bits
- LeetCode 191. Number of 1 Bits(比特数)
- leetcode 191. Number of 1 Bits
- Leetcode 191. Number of 1 Bits
- leetcode 191. Number of 1 Bits
- LeetCode 191. Number of 1 Bits
- LeetCode 191. Number of 1 Bits (Easy)
- leetcode(48).191. Number of 1 Bits
- Leetcode#191. Number of 1 Bits(位运算)
- LeetCode191. Number of 1 Bits
- leetcode 191. Number of 1 Bits
- LeetCode 191. Number of 1 bits (位1的数量)