一.题目描述
十进制整数 2 在十进制中是 1 位数,在二进制中对应 10 ,是 2 位数。
十进制整数 22 在十进制中是 2 位数,在二进制中对应 10110 ,是 5 位数。
请问十进制整数 2022 在二进制中是几位数?
二.代码
import java.math.BigInteger;
public class test1{
public static void main(String[] args) {
System.out.println(new BigInteger("2022",10).toString(2).length());
//将2022从10进制转为2进制
}
}
三.知识点
java中任意进制的转换方法
方法一:利用 Integer 实现进制转换
1、十进制转其他进制
Integer类的方法
Integer.toBinaryString(),十进制转换成二进制
Integer.toOctalString(), 十进制转换成八进制
Integer.toHexString() 十进制转换成十六进制
public class test1{
public static void main(String[] args){
int ten = 9843;
//十进制--->二进制
String two = Integer.toBinaryString(ten);//输出:10011001110011
//十进制--->八进制
String eight = Integer.toOctalString(ten);//输出:23163
//十进制--->十六进制
String sixteen = Integer.toHexString(ten);//输出:2673
System.out.println(two);
System.out.println(eight);
System.out.println(sixteen);
}
}
2、其他进制转十进制
Integer.valueOf(s, radix) 将 s 以 radix 进制的形式转换为十进制。
public class test1{
public static void main(String[] args){
//八进制--->十进制
String eight = "23163";
int ten1 = Integer.valueOf(eight,8);//输出:9843
//二进制--->十进制
String two = "10011001110011";
int ten2 = Integer.valueOf(two,2);//输出:9843
//十六进制--->十进制
String sixteen = "2673";
int ten3 = Integer.valueOf(sixteen,16);//输出:9843
System.out.println(ten1);
System.out.println(ten2);
System.out.println(ten3);
}
}
3.混合使用
eg:八进制转二进制
八进制---->十进制----->二进制
public class test1{
public static void main(String[] args){
String eight = "1410";
String two = Integer.toBinaryString(Integer.valueOf(eight,8));//八进制转十进制,十进制转二进制
System.out.println(two);//输出:1100001000
}
}
方法二:利用 BigInteger 实现进制转换。
注意:1.结果用String存,是一个字符串 2.new BigInteger(x, a).toString(b) x:想要转换的数字(字符串类型,记得加上双引号) a:原先的进制 b:想要转换的进制
import java.math.BigInteger;
public class test1{
public static void main(String[] args){
String a = new BigInteger("987", 10).toString(2);
/*注意:1.结果用String存,是一个字符串
2.new BigInteger(x, a).toString(b)
x:想要转换的数字(字符串类型,记得加上双引号)
a:原先的进制
b:想要转换的进制*/
System.out.println(a);//输出:1111011011
}
}