leetcode: (191) Number of 1 Bits

来源:互联网 发布:淘宝图片设计软件 编辑:程序博客网 时间:2024/06/05 20:19

【Question】

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.

题目要求求出2进制中1的个数

方法一:可以通过逐位与1进行与,可以得到总的1个数;

class Solution {public:     int hammingWeight(unsigned int n) {    int i;int count=0;for(int i=0;i<32;i++){if ((n&1)==1) count++;n>>=1;}return count;    }};

方法一需要比较32次不够优化

方法二:通过比较n&n-1,可以将非1的位省去,如n=10000000000000000000000000, 进行n&n-1只需要一次元算,而方法一要32次

class Solution {public:int hammingWeight(unsigned int n) { int count=0;while(n!=0){    n=n&(n-1);    count++;}return count;    }};


0 0
原创粉丝点击