* 十進制--->二進制
*/
public static void toBin1(int num){
trans(num, 1, 1);
}
/*
* 十進制--->八進制
*/
public static void toBa(int num){
trans(num, 7, 3);
}
/*
* 十進制--->十六進制
*/
public static void toHex1(int num){
trans(num, 15, 4);
}
//將轉換爲二進制和十六進制相同的部分進行封裝,將其不一樣的地方作爲參數
public static void trans(int num,int base,int offset){char[] ch={'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]=ch[temp];
num=num>>offset;
}
for(int x=pos;x>arr.length;++x){
System.out.println(arr[x]);
}
}
//轉換爲二進制
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 i=pos;i<arr.length;++i){
System.out.println(arr[i]+",");
}
}
//轉換爲十六進制
public static void toHex(int num){/*
* 查表法:將所有的元素臨時存儲起來,建立對應關係。
* 每一次&15後的值作爲索引去查建立好的表,就可以找對應的元素。
* 這樣比num-10+‘a’簡單的多
*/
//十進制轉換爲十六進制,通用適用於負數
char[] ch={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//定義一個臨時容器,一個int只有32位,對應的十六進制就是八位
char[] ch1=new char[8];
int pos=ch1.length;
while(num!=0){
int temp=num &15;
ch1[--pos]=ch[temp];
num=num>>4;
}
for(int i=pos;i<ch1.length;++i){
System.out.println(ch1[i]+",");
}
}