1 题目描述
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as theHamming 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.
题目出处:https://leetcode.com/problems/number-of-1-bits/
2 解题思路
(1)Java中int表示有符号数,需要对有符号数进行处理,这里的方法是做“与”操作。
3 自己的代码
package leetcode;
public class NumberOf1Bits {
public int hammingWeight(int n) {
int oneNum = 0;
if(n == 0) return 0;
else if(n < 0) {
oneNum++;
n = n & 0x7FFFFFFF;
}
int maxBit = 0;
for(int i = 30; i >= 0; i--){
maxBit = (int) Math.pow(2, i);
int temp = n - maxBit;
if(temp >= 0){
oneNum++;
if(temp == 0) break;
else n = temp;
}
}
return oneNum;
}
public static void main(String[] args) {
//int n = 0;
//int n = 1;
//int n = 2;
//int n = 11;
int n = 0x80000000;
System.out.println(new NumberOf1Bits().hammingWeight(n));
}
}