public static void main(String[] args) { toBin(60); toBa(60); toHex(60); } /** 十进制-->二进制 */ public static int toBin(int num) { trans(num,1,1); } /** 十进制-->八进制 */ public static int toBa(int num) { trans(num,7,3); } /** 十进制-->十六进制 */ public static int toHex(int num) { trans(num,15,4); } /** 查表法 思路: 1.通过&方法获取最低进制位。 2.通过存储的数组获取对应的进制字符 3.通过>>>方法获取有效位数 参数: num:十进制数 base:根据进制保留二进制位数用于计算每个值 offset:右移位数 */ private static void trans(int num,int base,int offset) { if(num==0) { System.out.println(num); return; } //表 char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; StringBuffer strb=new StringBuffer(); while(num!=0) { int temp = num & base; strb.append(chs[temp]); num = num >>> offset; } System.out.println(strb.receive());//strb.receive():反转(如:011=>110) } /** num:十进制数 base:根据进制保留二进制位数用于计算每个值 offset:右移位数 */ private static void trans(int num,int base,int offset) { if(num==0) { System.out.println(num); return; } //表 char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; char[] arr = new char[32]; int pos = arr.length; while(num!=0) { int temp = num & base; arr[--pos] = chs[temp];//知识点:一、--pos:pos=pos-1;二、从数组后向前存储(arr[length-1]~arr[0]) num = num >>> offset; } for(int i=pos;i<arr.length;i++) { System.out.print(arr[i]); } }
原理: