黑马程序员-查表发进制转换优化

时间:2023-02-19 13:23:56
---------------------- android培训、java培训、期待与您交流! ----------------------
                  进制转换在计算机中应用比较频繁,各种不同进制与十进制之间相互需要转换 /*
查表发将所有的元素临时存储起来,建立对应关系
查表法进制转换优化
*/
class TransTest 
{
public static void main(String[] args) 
{
toBin(60);
toOct(60);
toHex(60);
}
/*
十进制-->二进制
*/
public static void toBin(int num)
{
trans(num,1,1);
}
/*
十进制-->八进制
*/
public static void toOct(int num)
{
trans(num,7,3);
}
/*
十进制-->十六进制
*/
public static void toHex(int num)
{
trans(num,15,4);
}
public static void trans(int num,int base,int offest)
{
if(num==0)//如果num为0,打印0后直接返回
{
System.out.println(0);
return;
}
char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//列出进制转换中需要的字符
char[] arr = new char[32];//创建一个32位的字符数组
int pos = arr.length;
while(num!=0)
{
int temp = num&base;/
arr[--pos] = chs[temp];查表找到索引为temp的字符
num=num>>>offest;//右移对应的位数,继续循环相与。
}
for(int x=pos;x<arr.length;x++)//遍历字符数组
{
System.out.print(arr[x]);
}
System.out.print("\n");
}
}

                 
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima