1. 程式人生 > >十進位制與任意進位制的轉換

十進位制與任意進位制的轉換

任意進位制轉為十進位制

方法:i n 係數X基數權值累加

將二進位制轉成十進位制 10110110 = 1×27+1×25+1×24+1×22+1×2 = 128+32+16+4+2=182

182 = 1×102+8×101+2×100 = 100 +80 + 2 =182

程式碼實現

程式碼實現選擇從後向前遍歷,將控制檯輸入的數字以字串儲存

public class Main {
    public static void main(String []args){
        String input ="10110110";
        char in[]=input.toCharArray(
); double value=0;//十進位制數值 int j=0;//階數 double temp; for(int i=in.length-1;i>=0;i--){ //從後向前由小階數開始進行計算 temp=Math.pow(2,j++); value+=(in[i]-'0')*temp; } System.out.printf("%2.0f",value); } }

輸出為:182

十進位制轉為任意進位制

方法:這個數對基數依次取餘,將餘數倒序輸出,在倒序輸出餘數之前正序輸出最後一次的商。

這個方法是很簡單的一種方式,可以大大的節省時間

將十進位制轉成八進位制 579 / 8 = 72 ...3 72 / 8 =9 ...0 9 / 8 =1 ...1

先輸出最後一次計算的商,然後倒序從下到上輸出餘數 八進位制的 576 為 1103

程式碼實現

//模擬十進位制579轉成8進位制

public class Main {
    public static void main(String []args){
        int B =579;//需轉換的數
        int D =8;  //基數
        int temp[]=new int[100];
        int i=
0; //十進位制到任意進位制,這個數對基數依次取餘,倒序輸出,在之前正序輸出最後一個商 while (B/D!=0){ temp[i]=B%D; B=B/D; i++; } System.out.print(B);//輸出第一個商 for(int j=i-1;j>=0;j--) System.out.print(temp[j]);//倒數輸出餘數 } }

輸出為 1103