题解 | #求int型正整数在内存中存储时1的个数#
求int型正整数在内存中存储时1的个数
http://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9
复习一下进制转换API:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int cnt = 0;
String str = Integer.toBinaryString(num);
for(int i = 0; i < str.length(); i++){
if(str.charAt(i) == '1')
cnt++;
}
System.out.print(cnt);
}
}
顺便看到一位大佬的位运算做法,放在这里以供学习: 原文枫火蓮天 :
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int num = in.nextInt(); //读取数字
int n = 0; //计数变量
for(int i=0; i < 32; i++){
if((num&1) == 1) //如果末位为1则计数
n++;
num = num >>> 1; //无符号右移
}
System.out.println(n);
}
}