天天看點

Java數組-數組的應用-應用查表法将十進制整數轉化為16進制-2

之前的文章《Java數組-數組的應用  十進制整數轉化為16進制 》程式轉化出來的16進制,輸出的結構為倒序,還需要多程式進行修改

class  TenToHex

{

 public static void main(String[] args)

 {

  System.out.println("Hello World!");

  toHex(60);

  toHex_2(60);

  toHex_3(60);

 }

 public static void toHex(int num)

 {

  for(int x=0;x<8;x++)  //一個int整型變量有32個比特(bit),4個位元組(byte)

  {

   int temp = num & 15;

   //15是4個比特表示的最大整數,num與15作與運算,結果為num的最後4個比特位,4位二進制表示一位16進制

   if(temp>9)

    System.out.println((char)(temp-10+'A'));

   else

    System.out.println(temp);

   num = num >>> 4;

   //對二進制進行無符号右移四位,将已經轉化為16進制的二進制移去,對剩餘的二進制位進行循環轉化

  }

 }

 //查表法應用

 public static void toHex_1(int num)

 {

  //定義一個對應關系表

  char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

  for(int x=0;x<8;x++)

  {

   int temp = num & 15;

   System.out.print(chs[temp]);

   num = num >>> 4;

  }

 }//輸出的結果為倒序,需要對該程式進行改進

 public static void toHex_2(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 = 0;

  while(num!=0)

  {

   int temp = num & 15;

   arr[pos++] = chs[temp];

   num = num >>> 4;

  }

  //修改為

  for (int x=0;x<pos ;x++ )

  {

   System.out.print(arr[x]+",");

  }//cmd下輸出結果為C,3,空位沒有了

  System.out.println();

 }

 //下面是将上面的輸出倒序的程式修改為16進制正序輸出的程式

 public static void toHex_3(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;//pos的位置指在數組的尾部

  while(num!=0)

  {

   int temp = num & 15;

   arr[--pos] = chs[temp];

   num = num >>> 4;

  }

  for(int x=pos;x<arr.length;x++)

  {

   System.out.print(arr[x]);

  }

 }

}



繼續閱讀