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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王春涛 中级黑马   /  2014-5-22 17:08  /  1365 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王春涛 于 2014-5-22 18:08 编辑

看到数组查表法有点晕 尤其是查表法进制转换

2 个回复

倒序浏览
查表法就是:通过容器将对应的关系进行存储,利用了数组的角标。
对于映射关系,如果对应的一方是有序的编号(数组的角标)。 这时可以使用数组作为这个关系的容器将对应关系进行存储。
举个例子:在库房里有六个箱子,对每箱子都进行了编号,当我们要找某个箱子时,可以根据对应的编号到库房里去找。

查表法进制转换是运用了位运算符的特点:向右移一位相当于/2
向左移一位相当于*2

拿16进制举例:
要进行除16 的操作,就是以4为单位向右移动!



代码实现:

  1. class Demo   
  2. {  
  3.     public static void main(String[] args)   
  4.     {  
  5.         toHex(600);  
  6.     }  
  7.     public static void toHex(int num )  
  8.     {  
  9.         char[] chs = {'0','1','2','3',  
  10.                       '4','5','6','7',  
  11.                       '8','9','a','b',  
  12.                       'c','d','e','f'};  
  13.         //定义一个临时容器;  
  14.         char[] arr = new char[8]; //字符数组在被定义后,它的默认初始化值为'\u0000'相当于空格。  
  15.         int pos = arr.length  ;   
  16.         // 接下来 就要把 查到的字符 存到arr[] 中来,也就是要解决一个存储的问题。  
  17.         while(num != 0)  
  18.         {  
  19.             // num 是 移动后 前面的二进制位,temp 是 运算后得到的数  
  20.             int temp = num & 15;  
  21.             arr[--pos] = chs[temp];  
  22.             num = num >>> 4;  
  23.         }  
  24.         //存储数据的arr数组遍历  
  25.         for(int x = pos; x < arr.length ; x++)  
  26.         {  
  27.             System.out.print(arr[x]);  
  28.         }  
  29.         System.out.println();  
  30.     }  
  31. }  
复制代码


评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
Sevenette 发表于 2014-5-22 20:10
查表法就是:通过容器将对应的关系进行存储,利用了数组的角标。
对于映射关系,如果对应的一方是有序的编 ...

:handshake厉害
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马