切換
舊版
前往
大廳
主題

(Java程式碼) 2進位→16進位

深海異音 | 2013-11-04 23:44:22 | 巴幣 4 | 人氣 2581

進位轉換:
2進位】 轉成 【16進位】,並且印出算式



16進位要轉成2進位的方法
16=2*2*2*2
表示
1個16進位】的數字會變成【4個2進位】的數字,

0=0000、1=0001、2=0010、3=0011、4=0100、5=0101
6=0110、7=0111、8=1000、9=1001、A=1010、B=1011
C=1100、D=1101、E=1110、F=1111



截圖






程式碼



import  java.io.BufferedReader;
import  java.io.IOException;
import  java.io.InputStreamReader;

public  class  _2_to_16  {

      //  顯示全型數字
      public  static  String  quan_xing(String  s)  {
             s  =  s.replace("0",  "");//  如果字串內有半型的0,則變成全型的0
             s  =  s.replace("1",  "");
             s  =  s.replace("2",  "");
             s  =  s.replace("3",  "");
             s  =  s.replace("4",  "");
             s  =  s.replace("5",  "");
             s  =  s.replace("6",  "");
             s  =  s.replace("7",  "");
             s  =  s.replace("8",  "");
             s  =  s.replace("9",  "");
             s  =  s.replace("A",  "");
             s  =  s.replace("B",  "");
             s  =  s.replace("C",  "");
             s  =  s.replace("D",  "");
             s  =  s.replace("E",  "");
             s  =  s.replace("F",  "");
             return  s;
      }

      public  static  void  main(String[]  args)  throws  IOException  {

             BufferedReader  sc  =  new  BufferedReader(
                          new  InputStreamReader(System.in));//  從鍵盤讀取文字

             System.out.println("2進位16進位\n//-----------------------");
             System.out.print("輸入要轉換的數字:");
             boolean  cuo  =  false;//  判斷是否有錯誤

             String  cuo_zi =  "";
             String  shu_ru =  sc.readLine().toUpperCase();//  輸入的值
             int  chang  =  shu_ru.length();//  字串長度
             String  in  =  "";//  儲存【最後印出結果】
             String[]  xian  =  new  String[chang];//  計算用
             String  sum  =  "";//  顯示【答案】

             String[]  s16  =  {  "0",  "1",  "2",  "3",  "4",  "5",  "6",  "7",  "8",  "9",  "A",
                          "B",  "C",  "D",  "E",  "F"  };
             String[]  s2  =  {  "0000",  "0001",  "0010",  "0011",  "0100",  "0101",  "0110",
                          "0111",  "1000",  "1001",  "1010",  "1011",  "1100",  "1101",  "1110",
                          "1111"  };

             for  (int  i  =  0;  i  <  400;  i  =  i  +  4)  {//  0
                   if  (i  >=  chang)  {
                          if  (i  -  chang  ==  0)  {
                          }  else  if  (i  -  chang  ==  1)  {
                                shu_ru  =  "0"  +  shu_ru;
                          }  else  if  (i  -  chang  ==  2)  {
                                shu_ru  =  "00"  +  shu_ru;
                          }  else  if  (i  -  chang  ==  3)  {
                                shu_ru  =  "000"  +  shu_ru;
                          }
                          break;//  脫離
                   }
             }

             in  +=  ("2進位:"  +  shu_ru +  "        16進位"  +  "\n\n");//  印出  標題
             chang  =  shu_ru.length();//  重新取得  字串長度

             for  (int  i  =  0;  i  <  chang  /  4;  i++)  {//  印出個別2進位的符號(定位)
                   xian[i]  =  shu_ru.substring(i  *  4,  i  *  4  +  4);
                   in  +=  " "  +  quan_xing(xian[i]);
             }

             in  +=  "\n";//  換行
             for  (int  i  =  0;  i  <  chang  /  4;  i++)  {
                   for  (int  j  =  0;  j  <  s2.length;  j++)  {
                          if  (xian[i].equals(s2[j]))  {//  印出計算結果
                                in  +=  " └─"  +  quan_xing(s16[j])  +  "";
                                sum  +=  s16[j];//  儲存答案
                          }
                   }
                   //  判斷是否有錯字
                   if  (!(xian[i].equals("0000")  ||  xian[i].equals("0001")
                                ||  xian[i].equals("0010")  ||  xian[i].equals("0011")
                                ||  xian[i].equals("0100")  ||  xian[i].equals("0101")
                                ||  xian[i].equals("0110")  ||  xian[i].equals("0111")
                                ||  xian[i].equals("1000")  ||  xian[i].equals("1001")
                                ||  xian[i].equals("1010")  ||  xian[i].equals("1011")
                                ||  xian[i].equals("1100")  ||  xian[i].equals("1101")
                                ||  xian[i].equals("1110")  ||  xian[i].equals("1111")))  {
                          cuo  =  true;
                          cuo_zi  +=  xian[i];//  錯字
                   }
             }
             if  (cuo  ==  true)  {//  如果有錯字
                   in  =  ("檢視結果:\n有異音的字:  "  +  cuo_zi +  "");
             }

             in  +=  "\n\n答案:  "  +  sum;
             System.out.println(in);//  顯示結果
             System.gc();//  釋放記憶體
      }
}
 




送禮物贊助創作者 !
0
留言

創作回應

更多創作