A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

查表法 进行进制数转换
这样发帖 会不会被当成灌水啊??:funk:
  1. /*需求:
  2.         整形数字的进制转换
  3.         1、十进制 to 二进制                                toBin(int num)
  4.         2、十进制 to 八进制                                toOct(int num)
  5.         3、十进制 to 十六进制                        toHex(int num)
  6.                 三个转换函数均调用 trans(int num,int base,int offset)实现进制的转换               
  7. */

  8. class NumTrans
  9. {
  10.         //类单独执行需要的主函数
  11.         public static void main(String[] args)
  12.         {
  13.                 int num = -1 ;
  14.                 System.out.print(num + " 转换为二进制:");
  15.                 toBin(num);

  16.                 System.out.print(num + " 转换为八进制:");
  17.                 toOct(num);

  18.                 System.out.print(num + " 转换为十六进制:");
  19.                 toHex(num);
  20.        
  21.         }
  22.        
  23. /*转换部分,base 取 1        7        15 分别对应 二 八 十六进制
  24.                         offset 为右移量*/
  25.         public static void trans(int num,int base,int offset)
  26.         {
  27.                 char[] chs = {'0','1','2','3',
  28.                                         '4','5','6','7',
  29.                                         '8','9','A','B',
  30.                                         'C','D','E','F'};  //表格查询法实现
  31.                
  32.                 char[] arr = new char[32]; //存储数字 int 型 32位

  33.                 int point = arr.length;     //指向转换后数组的最后一位

  34.                 while(0 != num)
  35.                 {       
  36.                         /*提取位数进行查表转换,num==0 说明转换结束*/
  37.                         int temp = num & base ;
  38.                         arr[--point] = chs[temp];
  39.                         num = num >>> offset;
  40.                 }
  41.                 System.out.print("\t");
  42.                 for(int i = 0 ; i<arr.length ;i++)
  43.                 {
  44.                         System.out.print(arr[i]);
  45.                 }
  46.                 System.out.println();
  47.         }
  48.        
  49.         /*十  --->  二*/
  50.         public static void toBin(int num)
  51.         {
  52.                 trans(num,1,1);
  53.         }
  54.         /*十  --->  八*/
  55.         public static void toOct(int num)
  56.         {
  57.                 trans(num,7,3);
  58.         }
  59.         /*十  --->  十六*/
  60.         public static void toHex(int num)
  61.         {
  62.                 trans(num,15,4);
  63.         }
  64. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马