樸素法:十進位-->二進位
/*十進位-->二進位模2取餘逆序*/public static void toBin(int num){StringBuffer sb=new StringBuffer();while(num>0){sb.append(num%2);num=num/2;}System.out.println(sb.reverse());//反轉字串}
樸素法:十進位-->十六進位
/*十進位-->十六進位每次取二進位的後四位轉化*/public static void toHex(int num){StringBuffer sb=new StringBuffer();for(int x=0;x<8;x++)//int 是4個8位,0000-0000 0000-0000 0000-0000 0000-0000{int temp=num & 15;//和1111與操作,擷取最後四位二進位if(tem>9)sb.append((char)(temp-10+'A')); //超過9就轉換成字母elsesb.append(temp);num=num>>>4; //右移4位}System.out.println(sb.reverse());}
查表法:十進位-->二進位
/*查表法 十進位-->二進位 */public static void toBin(int num){//定義二進位的表char [] chs={'0','1'};//定義一個臨時儲存容器。char[] arr=new char[32];int pos=arr.length;while(num!=o){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 */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;}for(int x=pos;a<arr.length;x++){System.out.print(arr[x]+',');}}
查表法最佳化:抽出公用部分
//抽出的公用部分public static void trans(int num,int base,int offset){if(num==0){System.out.println(0);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];num=num>>>offset;}for(int x=pos;x<arr.length;x++){System.out.print(arr[x]);}}/*十進位-->二進位*/public static void toBin(int num){trans(num,1,1);}/*十進位-->八進位*/public static void toOctal(int num){trans(num,7,3);}/*十進位-->十六進位*/public static void toHex(int num){trans(num,15,4);}