题目
输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
代码
public class Solution {
public int NumberOf1(int n) {
String binaryString = Integer.toBinaryString(n);
int sum = 0;
for (int i = 0; i < binaryString.length();i++){
if (binaryString.charAt(i) == '1'){
sum++;
}
}
return sum;
}
}
分析
public class Solution14 {
public static void main(String[] args) {
System.out.println(hammingWeight(00000000000000000000000010000000));
}
/**
* 先判断整数二进制表示中最右边一位是不是1
* 如果是1 则统计一次 如果不是1 则不进行其他操作
* 整数二进制右移一位
* 继续判断
* 直到 n 变为 0
* @param n
* @return
*/
public static int hammingWeight(int n) {
int count = 0;
while (n != 0){
count += n & 1;
n >>>= 1;
}
return count;
}
}