LeetCode – Number of 1 Bits (Java)

Problem

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.

Java Solution

public int hammingWeight(int n) {
    int count = 0;
    for(int i=1; i<33; i++){
        if(getBit(n, i) == true){
            count++;
        }
    }
    return count;
}
 
public boolean getBit(int n, int i){
    return (n & (1 << i)) != 0;
}
Category >> Algorithms >> Interview  
If you want someone to read your code, please put the code inside <pre><code> and </code></pre> tags. For example:
<pre><code> 
String foo = "bar";
</code></pre>
  • Omid

    did you tried it ? n = 5

    int nuum= 0;
    while (n != 0)
    {
    int x = n & 1;
    if (x == 1) nuum++;
    n >>= 1;
    }
    return nuum;

  • int hammingWeight(int n) {
    int num = 0;
    while (n != 0) {
    n = n & (n-1);
    num++;
    }
    return num;
    }

  • Walden

    We could not use bit operators, just keep on dividing and modding by 2 until n==0; every time n%2==1, just add 1 to int answer.

  • Shailesh Agarwal

    Loop should run from 0 to 31

  • Why don’t you use this :

    public class Solution {
    public int hammingWeight(int n) {
    return Integer.bitCount(n);
    }
    }