进制介绍
二进制:0B开头,0-1
八进制:0开头,0-7
十进制:0-9
十六进制:0x开头,0-9和A-F
public class Binary{
public static void main(String[] args){
//二进制 10
int n1=0B1010
//十进制 1010
int n2=1010
//八进制 520
int n3=01010
//十六进制 65793
int 0x10101
}
}
n进制转换为十进制
1.从n进制数的最低位开始,逐位将每一位数字乘以n的幂,然后相加得到十进制数。
2.从右向左遍历每一位数字,每次将当前位数字乘以n的幂,然后累加到最终的十进制结果中。
public class NumberConverter {
public static int convertToDecimal(int number, int base) {
// 十进制结果初始化为0,幂初始化为0
int decimalNumber = 0;
int power = 0;
while (number > 0) {
// 取当前位的数值
int digit = number % 10;
//当前位数值乘以n进制的幂数
decimalNumber += digit * Math.pow(base, power);
//去除已处理的最低位
number /= 10;
//幂+1
power++;
}
//返回结果
return decimalNumber;
}
//入口函数
public static void main(String[] args) {
int binaryNumber = 101;
int base = 2;
int decimalResult = convertToDecimal(binaryNumber, base);
System.out.println("The decimal equivalent of binary number " + binaryNumber + " is: " + decimalResult);
}
}
十进制转n进制
1.不断地将十进制数除以n,直到商为0为止,每次取余数即为转换后的n进制数的一个数字。
2.将得到的余数按照逆序排列,即可得到最终的n进制数表示
public class NumberConverter {
public static String convertFromDecimal(int decimalNumber, int base) {
StringBuilder result = new StringBuilder();
while (decimalNumber > 0) {
int remainder = decimalNumber % base; // 求余数
result.insert(0, remainder); // 将余数插入到字符串的开头
decimalNumber /= base; // 更新十进制数为商,继续循环
}
return result.toString();
}
public static void main(String[] args) {
int decimalNumber = 42;
int base = 2;
String binaryResult = convertFromDecimal(decimalNumber, base);
System.out.println("The binary equivalent of decimal number " + decimalNumber + " is: " + binaryResult);
}
}
任意两个进制的转换
进制A转换为进制B,可以先将A转换为十进制,再转换为B进制
public class NumberConverter {
//a进制转为十进制
public static int convertToDecimal(int number, int base) {
// 十进制结果初始化为0,幂初始化为0
int decimalNumber = 0;
int power = 0;
while (number > 0) {
// 取当前位的数值
int digit = number % 10;
//当前位数值乘以n进制的幂数
decimalNumber += digit * Math.pow(base, power);
//去除已处理的最低位
number /= 10;
//幂+1
power++;
}
//返回结果
return decimalNumber;
}
//十进制转为b进制
public static String convertFromDecimal(int decimalNumber, int base) {
StringBuilder result = new StringBuilder();
while (decimalNumber > 0) {
int remainder = decimalNumber % base; // 求余数
result.insert(0, remainder); // 将余数插入到字符串的开头
decimalNumber /= base; // 更新十进制数为商,继续循环
}
return result.toString();
}
public static void main(String[] args) {
String binaryNumber = "1010";
int baseFrom = 2;
//二进制转换为十进制
int decimalNumber = convertToDecimal(binaryNumber, baseFrom);
int baseTo = 8;
//十进制转为八进制
String result = convertFromDecimal(decimalNumber, baseTo);
//输出结果
System.out.println("The binary equivalent of decimal number " + decimalNumber + " is: " + binaryResult);
}
}