好好学习,天天向下!
进制
- 二进制(数字前加
0b
,代表此数为二进制数),满二进一,由0和1两个基本数字组成 - 八进制(数字前加
0
,代表此数为八进制数),满八进一,由0,1,2,3,4,5,6,7八个基本数字组成 - 十进制(数字前什么都不加,则为十进制数),满十进一(日常生活中所使用的),由0,1,2,3, 4, 5, 6, 7, 8, 9十个基本数字组成
- 十六进制(数字前加
0x
,代表此数为十六进制数),满十六进一,由0,1,2,3, 4, 5, 6, 7, 8, 9和字母A到F(或a到f)组成
同一个数进制越大,所代表的值就越大
规则:
数字:123456
二进制===》十进制:1*
2^
5 + 2*
2^
4 + 3*
2^
3 + 4*
2^
2 + 5*
2^
1 + 6*
2^
0=……
规律:
将这个数字(123456)从右往左从零开始进行编号,这个数每一位数值乘以数字(123456)的进制(二进制,2)的编号次方之和,即为转换后的十进制结果。其他进制同理
代码实现:
public class sys {
public static void main(String[] args) {
sysHeavyLoad SYS = new sysHeavyLoad();
System.out.println(SYS.$SYS(100, "0B"));
}
}
public class sysHeavyLoad {
public static int $SYS(String number, String type) {
int sum = 0;
char[] array = number.toCharArray();
sum = summation(array, type);
return sum;
}
public static int $SYS(int number, String type) {
int sum = 0;
char[] array = String.valueOf(number).toCharArray();
sum = summation(array, type);
return sum;
}
/**
* 返回次方值
*/
public static int power(int a, int b) {
int power = 1;
for (int c = 0; c < b; c++)
power *= a;
return power;
}
/**
*判断类型并将转换结果返回
*/
public static int summation(char[] array, String type) {
int m = 0;
int sum = 0;
//二进制
if ("0b".equals(type) || "0B".equals(type)) {
m = 2;
}
//八进制
if ("0".equals(type)) {
m = 8;
}
//十六进制
if ("0x".equals(type) || "0X".equals(type)) {
m = 16;
}
for (int i = 0; i < array.length; i++) {
sum = sum + (array[i] - '0') * power(m, array.length - i - 1);
}
return sum;
}
}