进制转换
2025年4月8日大约 2 分钟
进制转换
进制是指通过有限的数字符号和位权规则表示数值的方法
概述
- 基数(radix)
- 基数是指一个进制系统中使用的数字符号的个数。例如,二进制有2个数字符号(0和1),十进制有10个数字符号(0到9)。
- 常见基数:
- 二进制:使用两个符号 0和1
- 八进制:使用八个符号 0到7
- 十进制:使用十个符号 0到9
- 十六进制:使用十六个符号 0到9和A到F
- 位权(Place Value)
- 位权是指一个数字符号在某个位置上的权值。
- 与基数和位置有关
例如,在十进制中,数字1在百位上的位权是,在十位上的位权是,在个位上的位权
- 在进制转换时,我们通常会将其转换为十进制,再根据需求转换为需要的进制
N进制转十进制
- 将N进制数转换为十进制数,可以使用以下公式公式:
十进制数 = 数位上的数 * (基数^位数)
- 数位
- 例如,将二进制数101转换为十进制数:
(从低位到高位计算)\ - 代码计算过程如下:
public static void nToTen(int radix,StringBuffer num){ // 传入 进制 和 数字
int sum = 0;
num.reverse(); // 将字符串反转,方便从低位开始计算
for(int i=0;i<num.length();i++){
sum += toValue(num.charAt(i)) * (int)Math.pow(radix,i); // (数位上的数) * (基数^位数)
}
System.out.println(sum);
}
public static int toValue(char c){ // 将字符转换为对应的数值
if(c>='A'){
return 10+c-'A';
}
return c-'0';
}
十进制转N进制
- 取余除基,逆序排列
- 例如,将十进制数3转换为二进制数:
6%2 = 1
将1
放入余数字符串str = ”1“
6/2 = 3
进入下次循环3%2 = 1
将1
放入余数字符串str = ”11“
3/2 = 1
进入下次循环1%2 = 0
将1
放入余数字符串str = ”011“
1/2 = 0
结束循环- 如果在前面添加,需要逆序,结果为
110
public static void tenToOther(int radix,int num){
StringBuffer tempSum = new StringBuffer();
while(num>0){
tempSum.append(num%radix); // 取余
num /= radix; // 除基
}
tempSum.reverse(); // 逆序
System.out.println(tempSum);
}