黑马程序员技术交流社区

标题: 关于进制转换中的查表法? [打印本页]

作者: 张金    时间: 2012-9-24 22:10
标题: 关于进制转换中的查表法?
对于查表法,直接不理解啊,不知道,哪位大神能用浅显的语言解释清楚,多谢了?
作者: 尤圣回    时间: 2012-9-24 22:12
定义好数组,里面存放你要的值 然后利用角标查 这个真的不想讲 百度百度就有了
作者: 佘天宇    时间: 2012-9-24 23:03
尤圣回 发表于 2012-9-24 22:12
定义好数组,里面存放你要的值 然后利用角标查 这个真的不想讲 百度百度就有了 ...
  1. class Problem2
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //查表法,如将十进制数据转换为用16进制或者2进制形式表示,这时候使用查表法比较方便
  6.                 toHex(60);
  7.                 toBin(-6);
  8.        
  9.                 //其它的如:星期的七天,0-6对应星期天到星期六
  10.                 //0-11对应一月到十二月。这都可以以使用查表法,当然其他的还有很对。
  11.         }
  12.         public static void toBin(int num)
  13.         {
  14.                 //定义二进制的表。
  15.                 char[] chs = {'0','1'};

  16.                 //定义一个临时存储容器。当然使用SringBuilder

  17.                 char[] arr = new char[32];

  18.                 //定义一个操作数组的指针
  19.                 int pos = arr.length;

  20.                 while(num!=0)
  21.                 {
  22.                         int temp = num & 1;
  23.                         arr[--pos] = chs[temp];
  24.                         num = num >>> 1;
  25.                 }

  26.                 for(int x=pos; x<arr.length; x++)
  27.                 {
  28.                         System.out.print(arr[x]);
  29.                 }
  30.         }


  31.         /*
  32.         0 1 2 3 4 5 6 7 8 9 A  B  C   D  E  F  ==十六进制中的元素。
  33.         0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

  34.         查表法:将所有的元素临时存储起来。建立对应关系。
  35.         每一次&15后的值作为索引去查建立好的表。就可以找对应的元素。
  36.         这样比 -10+'a'简单的多。
  37.         */

  38.         public static void toHex(int num)
  39.         {
  40.                 char[] chs = {'0','1','2','3'
  41.                                         ,'4','5','6','7'
  42.                                         ,'8','9','A','B'
  43.                                         ,'C','D','E','F'};
  44.                
  45.                 //定义一个临时容器。储存获取到的数据。
  46.                 char[] arr = new char[8];
  47.                 int pos = arr.length;

  48.                 while(num!=0)
  49.                 {
  50.                         int temp = num & 15;
  51.                         arr[--pos] = chs[temp];
  52.                         num = num >>> 4;
  53.                 }
  54.                
  55.                 //存储数据的arr数组遍历。
  56.                 for(int x=pos;x<arr.length; x++)
  57.                 {
  58.                         System.out.print(arr[x]+",");
  59.                 }
  60.         }
  61. }
复制代码





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