您的位置:首页 > 其它

十进制转二进制,八进制,十六进制(查表法)

2016-03-14 22:07 267 查看
/*
*     进制的转换
*     需求:十进制-->二进制
*         十进制-->八进制
*         十进制-->十六进制
*     思路: 查表法
*
* */

import java.util.Scanner;

public class youhua {
public static void main(String[] args){
Scanner in = new Scanner(System.in);

int jinzhi = in.nextInt();    //十进制转几进制
int num = in.nextInt();        //要转的数

switch(jinzhi){
case 2:
toBin(num);
break;
case 8:
toBa(num);
break;
case 16:
toHex(num);
break;
default:
System.out.println("error!");
}
}

//十进制-->二进制
public static void toBin(int num){
trans(num, 1, 1);
}

//十进制-->八进制
public static void toBa(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){
char[] chs = {'0', '1', '2', '3',
'4', '5', '6', '7',
'8', '9', 'A', 'B',
'C', 'D', 'E', 'F'};
char[] arr = new char[8];
int pos = arr.length;
int temp;
while(num != 0){
temp = num&base; //取低几位
arr[--pos] = chs[temp];    //    存入数组
num = num>>>offset;    //除以进制数
}

for(int i=pos; i<arr.length; i++)
System.out.print(arr[i]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: