进制介绍
二进制:0B开头,0-1
八进制:0开头,0-7
十进制:0-9
十六进制:0x开头,0-9和A-F
public class Binary{public static void main(String[] args){//二进制 10int n1=0B1010//十进制 1010int n2=1010//八进制 520int n3=01010//十六进制 65793int 0x10101}
}
n进制转换为十进制
1.从n进制数的最低位开始,逐位将每一位数字乘以n的幂,然后相加得到十进制数。
2.从右向左遍历每一位数字,每次将当前位数字乘以n的幂,然后累加到最终的十进制结果中。
public class NumberConverter {public static int convertToDecimal(int number, int base) {// 十进制结果初始化为0,幂初始化为0int decimalNumber = 0;int power = 0;while (number > 0) {// 取当前位的数值int digit = number % 10;//当前位数值乘以n进制的幂数decimalNumber += digit * Math.pow(base, power);//去除已处理的最低位number /= 10;//幂+1power++;}
//返回结果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,幂初始化为0int decimalNumber = 0;int power = 0;while (number > 0) {// 取当前位的数值int digit = number % 10;//当前位数值乘以n进制的幂数decimalNumber += digit * Math.pow(base, power);//去除已处理的最低位number /= 10;//幂+1power++;}
//返回结果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);}
}