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.
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
public class Solution {
// you need to treat n as an unsigned value
public static int hammingWeight(int n) {
if(n==0) return 0;
if(n==1) return 1;
int total=1;
int index=1;
while(n-total*2>=0){
total=total*2;
}
n=n-total;
index=index+hammingWeight(n);
return index;
}2.用位运算方法
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
if(n==0) return 0;
int i=0;
while(n!=0){
n=n & (n-1);
i++;
}
return i;
}
}
/********************************
* 本文来自博客 “李博Garvin“
* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/
【LeetCode从零单排】No 191.Number of 1 Bits(考察位运算)
原文:http://blog.csdn.net/buptgshengod/article/details/44242173