* 做一个进制转换器,能将十进制分别制转换成二进制,八进制,十六进制
- package exams;
- /*
- * 需求:
- * 做一个进制转换器,能将十进制分别制转换成二进制,八进制,十六进制
- *
- * */
- public class exams2
- {
- public static void main(String[] args)
- {
- int num=50;
- toBinary(num);
- toOctal(num);
- toHex(num);
- }
- //十进制转二进制
- public static void toBinary(int num)
- {
- trans(num,1,1);
- }
-
- //十进制转八进制
- public static void toOctal(int num)
- {
- trans(num,7,3);
- }
-
- //十进制转十六进制
- public static void toHex(int num)
- {
- trans(num,15,4);
- }
-
- /*base:二进制对应1,八进制对应7,十六进制对应15
- offset:偏移量,二进制对应1,八进制对应3,十六进制对应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[32];//定义32位的容器,存储模运算后的结果
- int pos=arr.length;//定义指针,指向模运算后的位置
- if(num==0)
- {
- System.out.println(0);
- return;
- }
- while(num!=0)
- {
- int temp=num & base;//取得最低一位
- arr[--pos]=chs[temp];//查表并将最低一位存入arr中
- num=num>>>offset;//右移相应的位数
- }
- //打印数组
- for(int i=pos;i<arr.length;i++)
- System.out.print(arr[i]+" ");
- System.out.println();//换行
- }
-
- }
复制代码
运行结果:
|