leetcode:Number of 1 Bits

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.

分析:题意为计算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;
    }
};

  

  

原文地址:https://www.cnblogs.com/carsonzhu/p/4658278.html