1 题目
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.
2 分析
开始想的是转化为bit数组再一个一个查是否是1,后来发现java系统函数的bitCount,发现满足条件。。
另外我看别人的方法是循环32次,每次与1相与并右移动一位。想法蛮好的。
3 代码
public int hammingWeight(int n){ return Integer.bitCount(n); }
public int hammingWeight(int n) { int sum=0; for(int i=0;i<32;i++){ sum+=n&1; n= n>>1; } return sum; }