取數字的最低四位 進位制轉換
阿新 • • 發佈:2019-02-10
用數字 & 15得最低四位
>> 有符號右移 開頭是1補1 是0補0
>>>無符號右移 開頭補0
輸出數字對應的十六進位制元素:
普通方法:System.out.print((char)(num-10+"A")); //輸出數字的十六進位制表現形0~9,A~F
查表法:將所有元素臨時儲存起來,建立對應關係,每次 & 15後的值作為索引去查表,可以找到對應的元素。
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'} ;
十進位制轉二進位制十進位制轉十六進位制public static void toBin(int num) { //定義二進位制的表。 char[] chs = {'0','1'}; //定義一個臨時儲存容器。 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]); } }
將共通地方做成一個函式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]+","); } }
/* 十進位制-->二進位制 */ public static void toBin(int num) { trans(num,1,1); } /* 十進位制-->八進位制 */ public static void toBa(int num) { trans(num,7,3); } /* 十進位制-->十六進位制 */ public static void toHex(int num) { trans(num,15,4); } 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]); } return ; }