十進位制與任意進位制的轉換
阿新 • • 發佈:2018-12-17
任意進位制轉為十進位制
方法:∑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