题解 | #华为no.15 求int型正整数在内存中存储时1的个数#
求int型正整数在内存中存储时1的个数
http://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9
//十进制转其他进制
Integer.toHexString(10); //将10转换为十六进制,返回字符串类型
Integer.toOctalString(10); //将10转为八进制,返回字符串类型
Integer.toBinaryString(10); //将10转为二进制,返回字符串类型 //其他进制转十进制
//十六进制转十进制,例如:0xFFFF
Integer.valueOf("FFFF",16).toString(); //valueOf()方法返回Integer类型,调用toString()返回字符串
Integer.parseInt("FFFF",16); //返回int基本数据类型
Integer.toString(0xFFFF); //该方法可直接传入表示十六进制数字的基本数据类型,方法返回字符串
//八进制转十进制,例如:017
Integer.valueOf("17",8).toString(); //valueOf()方法返回Integer类型,调用toString()返回字符串
Integer.parseInt("17",8); //返回int基本数据类型
Integer.toString(017); //该方法可直接传入表示八进制数字的基本数据类型,方法返回字符串
//二进制转十进制,例如:0101
Integer.valueOf("0101",2).toString(); //valueOf()方法返回Integer类型,调用toString()返回字符串
Integer.parseInt("0101",2); //返回int基本数据类型
//对于二进制、八进制和十六进制之间的转换,可先转换为十进制,在用十进制转多进制的相应方法进行转换
//例如将十六进制0xFF转为二进制
Integer.toBinaryString(Integer.valueOf("FF",16));
//或者
Integer.toBinaryString(Integer.parseInt("FF",16));
//对于输入的表示十六进制的字符串,需要先截取数字子串,再用valueOf()或parseInt()方法进行转换为十进制
//例如输入0xFF
String s = "0xFF";
Integer.valueOf(s.subString(2,s.length()),16);
//对于valueOf方法,可以用于基本数据类型的装箱及多进制到十进制之间的转换。
public class Main {
public static void main(String[] args) {
//位运算
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String s = Integer.toBinaryString(num);
char[] c = s.toCharArray();
int count = 0;
for (int i = 0; i < c.length; i++) {
if (c[i]=='1') {
count++;
}
}
System.out.println(count);
}
}

