任意进制转10进制

十进制中的数位排列是这样的…… 万 千 百 十 个 十分 百分 千分……
R进制中的数位排列是这样的……R^4 R^3R^2 R^1 R^0 R^-1 R^-2 R^-3……
 
所以任意进制转为10进制直接就按权展开就行
即    十进制   9876=9×10^3+8×10^2+7×10^1+6×10^0 = 9000 + 800 + 70 + 6 = 9876
       二进制   1011  =    1×2^3+0×2^2+1×2^1+1×2^0   =  8+2+1  =  11
 
所以直接从最后一位开始,加上每一位的10进制,最终的和就是待转换数的十进制
 1 import java.util.Scanner;
 2 
 3 public class Change {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         Scanner cin = new Scanner(System.in);
 8         System.out.print("输入待转换的数和其进制:");
 9         int OldNum = cin.nextInt();//待转换成10进制的数
10         int x = cin.nextInt();//待转换数的进制
11         int num = x2ten(OldNum, x);
12         System.out.println(num);
13     }
14     public static int x2ten(int n, int x) {
15         int num = 0;
16         int k = 1;
17         while(n!=0) {
18             int m = n % 10;//取最后一位数
19             num += m * k;
20             n = n / 10;
21             k *= x;
22         }
23         return num;
24     }
25 }

 

posted @ 2018-05-19 20:50  风过杀戮  阅读(4066)  评论(0编辑  收藏  举报