思想:先“与”后移。即待转换的数在商不为零的前提下(左乘右除),循环与(进制基数-1)相与,然后查表,然后待转换的数友谊。直接看代码吧,代码比较好理解。
//十进制转二进制、八进制、十六进制
class Trans
{
public static void main(String[] args)
{
//toBinary(60);
//toOux(-60);
toHex(60);
//System.out.println("Hello World!");
}
//转二进制
public static void toBinary(int num){
trans(num,1,1);
}
//转八进制
public static void toOux(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 offset){ //参数分别为待转换的数,进制基数-1,右移位数
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'};//注意要从‘0’开始!!这样才能满足chs[1]='1'。
char[] arr=new char[32];
int i=0;
while(num!=0){
int temp=num&base;
arr[i++]=chs[temp];
num=num>>>offset;
}
for(int j=i-1;j>=0;j--)
System.out.print(arr[j]);
}
}