学习目标:进制转换
学习内容:
1.十进制: 都是以0-9这九个数字组成,不能以0开头。
2.二进制: 由0和1两个数字组成。
3.八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。
4.十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以0x开始。
进制转换方法1:
此内包含:16进制转10进制、10进制转10进制、10进制转2进制。
package lanqiao;
import java.util.Scanner;
//进制转换
public class Test {
public static void main(String[] args) {
System.out.println("请输入一个数:");
Scanner sc = new Scanner(System.in);
String x = sc.nextLine();
long a = Long.parseLong(x,16); //16进制转10进制
System.out.println("16进制转10进制:"+a);
long b = Long.parseLong(x,10); //10进制转10进制
System.out.println("10进制转10进制:"+b);
long c = Long.parseLong(x,2); //10进制转2进制
System.out.println("10进制转2进制:"+c);
}
}
运行结果示例:
进制转换方法2:
此内包含:10进制转2进制、10进制转8进制、10进制转16进制。2进制转10进制、8进制转10进制、16进制转10进制。
使用Integer.parseInt()方法;转换成负数只需要在字符串前加上负号-;大于Integer.MAX_VALUE或小于Integer.MIN_VALUE的转换将会抛出错误。
使用Integer.toString() 10进制转2,8,16进制;返回类型String。
package lanqiao;
import java.math.BigInteger;
import java.util.Scanner;
//进制转换
public class Test {
public static void main(String[] args) {
System.out.println("请输入一个数:");
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
String a = Integer.toString(x, 2); // 10进制转2进制
String b = Integer.toString(x, 8); // 10进制转8进制
String c = Integer.toString(x, 16);// 10进制转16进制
BigInteger a1 = new BigInteger("0001", 2); // 2进制转10进制
BigInteger b1 = new BigInteger("10", 8); // 8进制转10进制
BigInteger c1 = new BigInteger("10AC", 16);// 16进制转10进制
System.out.println("--------------------------------------");
System.out.println("10 to 2--> "+a);
System.out.println("10 to 8--> "+b);
System.out.println("10 to 16-->"+c);
System.out.println("---------------------------------------");
System.out.println("2 to 10--> "+a1);
System.out.println("8 to 10--> "+b1);
System.out.println("16 to 10-->"+c1);
}
}
运行结果示例:
进制转换方法3:十六进制转十进制(普通方法)
package lanqiao;
import java.util.Scanner;
//进制转换
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个十六进制数:");
String string = scanner.nextLine();
char a[]=string.toCharArray();
long sum = 0;
int b = a.length;
for (int i = 0; i < b; i++) {
if((int)a[i]-48>9){
if(a[i]=='A')
sum+=10*Math.pow(16,b-i-1);
else if(a[i]=='B')
sum+=11*Math.pow(16,b-i-1);
else if(a[i]=='C')
sum+=12*Math.pow(16,b-i-1);
else if(a[i]=='D')
sum+=13*Math.pow(16,b-i-1);
else if(a[i]=='E')
sum+=14*Math.pow(16,b-i-1);
else if(a[i]=='F')
sum+=15*Math.pow(16,b-i-1);
}
else{
sum+=((int)a[i]-48)*Math.pow(16,b-i-1);
}
}
System.out.println("转换为十进制数为:"+sum);
}
}
运行结果示例:
进制转换方法4:十进制转十六进制(普通方法)
package lanqiao;
import java.util.Scanner;
//进制转换
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个十进制数:");
int a = scanner.nextInt();
int i = 0;
char[] c= new char[1000];
if (a == 0) {
System.out.println(0);
}else {
while(a != 0) {
int b = a % 16;
if (b > 9) {
c[i] = (char) (b - 10 + 'A');
}else {
c[i] = (char) (b + '0');
}
a /= 16;
i++;
}
}
for (int j = i - 1; j>=0; j--) {
System.out.print(c[j]);
}
}
}
运行结果示例:
进制转换方法5:十进制转八进制(普通方法)
package lanqiao;
import java.util.Scanner;
//进制转换
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个十进制数:");
int n = scanner.nextInt();
long sum = 0;
long k = 1;
while(n != 0){
sum = sum + (n % 8) * k;
n /= 8;
k *= 10;
}
System.out.println("转换为八进制数为:"+sum);
}
}
运行结果示例: