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; } };
朱颜辞镜花辞树,敏捷开发靠得住!