求int型正整数在内存中存储时1的个数(进制转换之后求1的个数)
- 题目:输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
- 示例:
输入
5
输出
2
- 代码
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int count = 0;
String s = Integer.toBinaryString(sc.nextInt());
for(int i=0;i<s.length();i++){
if((s.charAt(i)-'0')==1){
count++;
}
}
System.out.println(count);
}
}
-
java中提供的进制转换方法:
十进制转二进制Integer.toBinaryString(num)
十进制转八进制Integer.toOctalString(num)
十进制转十六进制Integer.toHexString(num)
十进制转n进制Integer.toString(num,n)
-
自己实现的进制转换(n<10,如果大于等于10需要增加余数与字母的对应关系)
public String Trans(int num, int radix) {
StringBuilder sb = new StringBuilder();
while (num > 0) {
sb.append(num % radix);
num = num / radix;
}
return sb.length() > 0 ? sb.reverse().toString() : "0";
}