黑马程序员技术交流社区
标题:
分享一下用简单的查表法来完成十进制转16,2,8进制(面试很...
[打印本页]
作者:
卞潇洋
时间:
2012-12-16 17:57
标题:
分享一下用简单的查表法来完成十进制转16,2,8进制(面试很...
说起用进制转换,有很多很多方法,当然,这种查表法是相对比较简单且实用的,比起其他过长的代码方法,这种更灵活一些。
这种方法用到了位运算的技巧和建立表以便查找的方法。
转换16进制的方法:
public static void toHex(int num){
//创建一个char的数组,当作表,方便去查表
char[] ch = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] chs =new char[8];
//point的相当于数组的指针
int point = chs.length;
while(num!=0){
//与运算以后,将得到该数的16进制位的底位。而因为16进制的10以后的数字用字母表示所以这就用到了查表
int temp = num&15;
chs[--point]=ch[temp];
//依次右移4位,计算出该数的16进制的各个位。
num = num>>>4;
}
//输出的方法。
printArr(chs,point);
}
public static void printArr(char[] arr,int point){
//这里注意,存入数组后,16进制位是从数组的高位存的,所以遍历数组时,point指针起到了作用
for(int x = point;x<arr.length;x++){
System.out.print(arr[x]);
}
}
这是十进制转16进制的方法,该方法有一大好处,那就是当想转8进制或者2进制时,无须对方法做大的修改,只需&7、1即可,同时相应的右移3,和1位,便可完成对16,8,1的转换。是不是很方便
作者:
许庭洲
时间:
2012-12-18 08:35
值得学习ing!
作者:
谢文辉
时间:
2012-12-18 13:06
学习了。。。。{:soso_e182:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2