运用移位将十进制数转换成二进制数,八进制数,十六进制数
提要:通过移位,求出对应位的数的值,用char保存
实现代码:
public class Test {
public static void main(String[] args) {
toBinary(60); //求二进制
toOctal(60);//求八进制
toHex(60);//求十六进制
}
public static void toBinary(int num){//求二进制
char[] arr=trans(num,1,2);
System.out.print("对应二进制为:");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}
System.out.println();
}
public static void toOctal(int num){//求八进制
char[] arr=trans(num,7,3);
System.out.print("对应八进制为:");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}
System.out.println();
}
public static void toHex(int num){//求八进制
char[] arr=trans(num,15,4);
System.out.print("对应十六进制为:");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}
}
public static char[] trans(int num,int m,int n){
char[ ] chs={'0','1','2','3',//数组容器,固定值恰好对应有下标
'4','5','6','7',
'8','9','A','B',
'C','D','E','F',
};
char[] arr1 = new char[8];
int pos=arr1.length;
while(num!=0){
int temp=num&m;
arr1[--pos]=chs[temp];
num = num >>>n;
}
int k=arr1.length-pos;
char[] arr2 = new char[k];
for(int i=0;i<k;i++){
arr2[i]=arr1[pos];
pos++;
}
return arr2;
}
}
输出结果:
对应二进制为:110
对应八进制为:74
对应十六进制为:3C