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.Solution:
n & (n - 1) will eliminate a 1 in binary representation.
Therefore we keep doing this until n becomes zero, which means no more 1s in binary representation.
Code:
public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int count = 0; while (n != 0) { n = n & (n - 1); count++; } return count; } }