This is my solution of the problem, but it always gives the wrong answer when the input is

2147483648 (10000000000000000000000000000000)/

I was wondering if it is about overflow? Why n is not greater than 0 in this case?

```
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;
}
}
```