java十進制轉換爲二進制、八進制和十六進制

/*
* 十進制--->二進制
*/
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]+",");
      }
       }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章