進位轉換:
【8進位】 轉成 【2進位】,並且印出算式
8進位要轉成2進位的方法:
8=2*2*2
表示【1個8進位的數字】會變成【3個2進位的數字】,
0(8)=000(2)、
1=001、2=010、3=011、
4=100、5=101、6=110、
7=111,到8就進位
【8進位】 轉成 【2進位】,並且印出算式
8進位要轉成2進位的方法:
8=2*2*2
表示【1個8進位的數字】會變成【3個2進位的數字】,
0(8)=000(2)、
1=001、2=010、3=011、
4=100、5=101、6=110、
7=111,到8就進位
截圖
程式碼
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class _8_to_2 { // 顯示全型數字 public static String quan_xing(String s) { s = s.replace("0", "0");// 如果字串內有半型的0,則變成全型的0 s = s.replace("1", "1"); s = s.replace("2", "2"); s = s.replace("3", "3"); s = s.replace("4", "4"); s = s.replace("5", "5"); s = s.replace("6", "6"); s = s.replace("7", "7"); s = s.replace("8", "8"); s = s.replace("9", "9"); s = s.replace("A", "A"); s = s.replace("B", "B"); s = s.replace("C", "C"); s = s.replace("D", "D"); s = s.replace("E", "E"); s = s.replace("F", "F"); return s; } public static void main(String[] args) throws IOException { BufferedReader sc = new BufferedReader( new InputStreamReader(System.in));// 從鍵盤讀取文字 System.out.println("8進位→2進位\n//-----------------------"); System.out.print("輸入要轉換的數字:"); String shu_ru = sc.readLine().toUpperCase();// 輸入的值 in += ("8進位:" + shu_ru + " → 2進位" + "\n\n"); String in = "";// 儲存【最後印出結果】 boolean cuo = false;// 判斷是否有錯誤 String cuo_zi = "";// 判斷錯誤的文字 int chang = shu_ru.length();// 字串長度 String[] xian = new String[chang];// 計算用 String sum = "";// 顯示【答案】 String[] s8 = { "0", "1", "2", "3", "4", "5", "6", "7" }; String[] s2 = { "000", "001", "010", "011", "100", "101", "110", "111" }; for (int i = 0; i < chang; i++) {// 印出個別16進位的符號(定位) xian[i] = shu_ru.substring(i, i + 1); in += " ┌" + quan_xing(xian[i]) + "┐"; } in += "\n";// 換行 for (int i = 0; i < chang; i++) { for (int j = 0; j < s2.length; j++) { if (xian[i].equals(s8[j])) {// 印出計算結果 in += " " + quan_xing(s2[j]); sum += s2[j];// 儲存答案 } } // 判斷是否有錯字 if (!(xian[i].equals("0") || xian[i].equals("1") || xian[i].equals("2") || xian[i].equals("3") || xian[i].equals("4") || xian[i].equals("5") || xian[i].equals("6") || xian[i].equals("7"))) { cuo = true; cuo_zi += xian[i];// 錯字 } } in += "\n\n答案: " + sum; if (cuo == true) {// 如果有錯字 in = ("檢視結果:\n有異音的字: 【" + cuo_zi + "】"); } System.out.println(in);// 顯示計算結果 System.gc();// 釋放記憶體 } } |