黑马程序员技术交流社区
标题:
关于进制转换中的查表法?
[打印本页]
作者:
张金
时间:
2012-9-24 22:10
标题:
关于进制转换中的查表法?
对于查表法,直接不理解啊,不知道,哪位大神能用浅显的语言解释清楚,多谢了?
作者:
尤圣回
时间:
2012-9-24 22:12
定义好数组,里面存放你要的值 然后利用角标查 这个真的不想讲 百度百度就有了
作者:
佘天宇
时间:
2012-9-24 23:03
尤圣回 发表于 2012-9-24 22:12
定义好数组,里面存放你要的值 然后利用角标查 这个真的不想讲 百度百度就有了 ...
class Problem2
{
public static void main(String[] args)
{
//查表法,如将十进制数据转换为用16进制或者2进制形式表示,这时候使用查表法比较方便
toHex(60);
toBin(-6);
//其它的如:星期的七天,0-6对应星期天到星期六
//0-11对应一月到十二月。这都可以以使用查表法,当然其他的还有很对。
}
public static void toBin(int num)
{
//定义二进制的表。
char[] chs = {'0','1'};
//定义一个临时存储容器。当然使用SringBuilder
char[] arr = new char[32];
//定义一个操作数组的指针
int pos = arr.length;
while(num!=0)
{
int temp = num & 1;
arr[--pos] = chs[temp];
num = num >>> 1;
}
for(int x=pos; x<arr.length; x++)
{
System.out.print(arr[x]);
}
}
/*
0 1 2 3 4 5 6 7 8 9 A B C D E F ==十六进制中的元素。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
查表法:将所有的元素临时存储起来。建立对应关系。
每一次&15后的值作为索引去查建立好的表。就可以找对应的元素。
这样比 -10+'a'简单的多。
*/
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];
int pos = arr.length;
while(num!=0)
{
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]+",");
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2