Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the ).
For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011
, so the function should return 3.
分析:题意为计算32位整型数2进制表示中1的个数。
方法还是非常多的,也很好理解:
1、利用2进制的数学特点来
class Solution {public: int hammingWeight(uint32_t n) { int count=0; while(n){ if(n%2==1) count++; n=n/2; } return count; }};
2、将每一位分别和1做与运算,计算不为0的个数即可
class Solution {public: int hammingWeight(uint32_t n) { int count=0; while(n){ count+=n&1; n>>=1; } return count; }};
3、每次n&(n-1)可以将n里面的值为1的位数减少一位
class Solution {public: int hammingWeight(uint32_t n) { int sum = 0; while (n) { n &= (n-1); ++sum; } return sum; }};