查表法就是:通过容器将对应的关系进行存储,利用了数组的角标。
对于映射关系,如果对应的一方是有序的编号(数组的角标)。 这时可以使用数组作为这个关系的容器将对应关系进行存储。
举个例子:在库房里有六个箱子,对每箱子都进行了编号,当我们要找某个箱子时,可以根据对应的编号到库房里去找。
查表法进制转换是运用了位运算符的特点:向右移一位相当于/2
向左移一位相当于*2
拿16进制举例:
要进行除16 的操作,就是以4为单位向右移动!
代码实现:
- class Demo
- {
- public static void main(String[] args)
- {
- toHex(600);
- }
- public static void toHex(int num )
- {
- char[] chs = {'0','1','2','3',
- '4','5','6','7',
- '8','9','a','b',
- 'c','d','e','f'};
- //定义一个临时容器;
- char[] arr = new char[8]; //字符数组在被定义后,它的默认初始化值为'\u0000'相当于空格。
- int pos = arr.length ;
- // 接下来 就要把 查到的字符 存到arr[] 中来,也就是要解决一个存储的问题。
- while(num != 0)
- {
- // num 是 移动后 前面的二进制位,temp 是 运算后得到的数
- int temp = num & 15;
- arr[--pos] = chs[temp];
- num = num >>> 4;
- }
- //存储数据的arr数组遍历
- for(int x = pos; x < arr.length ; x++)
- {
- System.out.print(arr[x]);
- }
- System.out.println();
- }
- }
复制代码
|