标签:
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与操作求出数的二进制中1的个数。
方法二:利用n&(n-1)。
n&(n-1)可以用来做以下件事:
1. 计算数字i的二进制表示中1的个数。
while (n >0 ) { count ++; n &= (n-1); }
2. 判断i是不是2的整数次幂。
n > 0 && ((n & (n - 1)) == 0 )
3.
代码:
方法一:
1 class Solution { 2 public: 3 int hammingWeight(uint32_t n) { 4 int count=0; 5 while(n){ 6 count+=n&1; 7 n=n>>1; 8 } 9 return count; 10 } 11 };
方法二:
1 class Solution { 2 public: 3 int hammingWeight(uint32_t n) { 4 int count=0; 5 while(n){ 6 n&=n-1; 7 count++; 8 } 9 return count; 10 } 11 };
Leetcode 191. Number of 1 Bits
标签:
原文地址:http://www.cnblogs.com/Deribs4/p/5720377.html