黑马程序员技术交流社区

标题: 做一个进制转换器,能将十进分别制转换成二进制,八进... [打印本页]

作者: franksight    时间: 2015-2-21 12:20
标题: 做一个进制转换器,能将十进分别制转换成二进制,八进...
* 做一个进制转换器,能将十进制分别制转换成二进制,八进制,十六进制
  1. package exams;
  2. /*
  3. * 需求:
  4. * 做一个进制转换器,能将十进制分别制转换成二进制,八进制,十六进制
  5. *
  6. * */
  7. public class exams2
  8. {

  9.         public static void main(String[] args)
  10.         {
  11.                 int num=50;       
  12.                 toBinary(num);
  13.                 toOctal(num);       
  14.                 toHex(num);
  15.         }
  16.         //十进制转二进制
  17.         public static void toBinary(int num)
  18.         {
  19.                 trans(num,1,1);
  20.         }
  21.        
  22.         //十进制转八进制
  23.         public static void toOctal(int num)
  24.         {
  25.                 trans(num,7,3);
  26.         }
  27.        
  28.         //十进制转十六进制
  29.         public static void toHex(int num)
  30.         {
  31.                 trans(num,15,4);
  32.         }
  33.                        
  34.         /*base:二进制对应1,八进制对应7,十六进制对应15
  35.         offset:偏移量,二进制对应1,八进制对应3,十六进制对应4
  36.         */
  37.         public static void trans(int num,int base,int offset)//进制转换的公共部分
  38.         {
  39.                 //定义一个表,供进制转换后查找用。
  40.                 char[] chs={'0','1','2','3',
  41.                                 '4','5','6','7',
  42.                                 '8','9','A','B',
  43.                                 'C','D','E','F',};
  44.                 char[] arr=new char[32];//定义32位的容器,存储模运算后的结果
  45.                 int pos=arr.length;//定义指针,指向模运算后的位置
  46.                 if(num==0)
  47.                 {
  48.                         System.out.println(0);
  49.                         return;
  50.                 }
  51.                 while(num!=0)
  52.                 {
  53.                         int temp=num & base;//取得最低一位
  54.                         arr[--pos]=chs[temp];//查表并将最低一位存入arr中
  55.                         num=num>>>offset;//右移相应的位数
  56.                 }
  57.                 //打印数组
  58.                 for(int i=pos;i<arr.length;i++)
  59.                         System.out.print(arr[i]+" ");
  60.                 System.out.println();//换行
  61.         }
  62.        

  63. }
复制代码

运行结果:





作者: 万合天宜    时间: 2015-2-21 15:52
很不错,加油加油!!
作者: franksight    时间: 2015-2-22 07:34
万合天宜 发表于 2015-2-21 15:52
很不错,加油加油!!

哈哈,恩恩,加油
作者: 疯狂的大猫    时间: 2015-5-10 11:02
代码优化得很不错啊!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2