题目:
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 class Solution { 2 public: 3 int hammingWeight(uint32_t n) { 4 int i = 0; 5 while (n) 6 { 7 i += n & 0x1; 8 n >>= 1; 9 } 10 11 return i; 12 } 13 };
法二:用-1后的n做与运算
1 class Solution { 2 public: 3 int hammingWeight(uint32_t n) { 4 int count = 0; 5 while(n != 0) 6 { 7 n = n&(n-1); 8 count++; 9 } 10 return count; 11 } 12 };
原文:http://www.cnblogs.com/raichen/p/4939403.html