使用Java语言完成二进制、八进制、十进制的进制转换,熟悉进制转换算法。
一、算法思想
实现进制转换的核心操作是与运算,通过和基数做与运算得到相应进制每一位的值。通过将值倒叙输出即可得到转换后的相应进制的值。
二、数组的应用
对于十六进制的转换,会出现字母,这时应用数组的查表法,即数组的角标与数组的元素实现一一对应的查表关系。这是数组的常用操作。
补充知识:数组的使用:如果数据出现了对应关系,而且对应关系的一方是有序的数字编号 。并作为角标使用,这时就必须想到数组的使用。
三、程序实现
//进制转换
class JZZHDemo
{
public static void main(String[] args){
ToHex(26); //十六进制
ToBinary(26); //二进制
ToOctal(26); //八进制
}
public static void ToHex(int num){
trans(15, 4, num);
}
public static void ToOctal(int num){
trans(7, 3, num);
}
public static void ToBinary(int num){
trans(1, 1, num);
}
public static void trans(int base, int offset, int num){
if(num == 0){
System.out.println(num);
return;
}
char[] chs ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//定义查表数组;
char[] arr = new char[32]; //定义一个临时容器数组用来存储运算数据;
int pos = arr.length;
while(num != 0){
int temp = num & base;
arr[--pos] = chs[temp]; //temp通过查表数组的转化,将对于十六进制值存储到数组arr中
num = num >>> offset; //num 右移
}
for(int x=pos; x<arr.length; x++){ //x=pos while循环结束后pos最后的值为起始位置。
System.out.print(arr[x]);
}
System.out.println();
}
}
四、总结
进制转换算法做为基础算法,对于初学者来讲还是要熟练掌握的,在进制转换的算法中包含了很多思想,也存在一些小细节,以后要多基础算法多加练习和掌握。