题目描述
给定一个32位整数n,返回该整数二进制形式1的个数。
输入描述:
输入一个整数,代表n,n为32为整数。
输出描述:
输出一个整数,代表n的二进制表达式中1的个数。
示例1
输入
1
输出
1
示例2
输入
-2
输出
31
解法一:循环遍历
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
getRes(n);
}
public static void getRes(int n){
int res = 0;
while(n!=0){
if((n&1)==1){
res++;
}
n >>>= 1;
}
System.out.println(res);
}
}
解法二:减少遍历此数
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
getRes(n);
}
public static void getRes(int n){
int res = 0;
while(n!=0){
//n-(n&(~n+1)) 可以达到同样效果
n &= (n-1);
res++;
}
System.out.println(res);
}
}