常用的进制类型:二进制
、八进制
、十进制
、十六进制
。其中十进制
是人类计数最常用的进制,大部分操作都是以十进制
作为桥梁进行转换。
1 常用进制数字声明方式
常用的进制,除十进制之外,在代码中声明其它进制数字采用加前缀的方式:
- 二进制:加前缀
0b
- 八进制:加前缀
0
- 十六进制:加前缀
0x
//声明2进制数字
int num2 = 0b10000;
//声明8进制数字
int num8 = 020;
//声明16进制数字
int num16 = 0x10;
System.out.println(num2);//16
System.out.println(num8);//16
System.out.println(num16);//16
2 十进制转换为常用进制
以数字16
为例,如下:
//10进制转换为2进制字符串
System.out.println(Integer.toBinaryString(16));//10000
//10进制转换为8进制字符串
System.out.println(Integer.toOctalString(16));//20
//10进制转换为16进制字符串
System.out.println(Integer.toHexString(16));//10
3 常用进制转换为十进制
如第一步中所示,如果声明时已经标记了进制的数字类型,直接当做十进制使用即可,计算机会自动识别,如下:
int num2 = 0b10000;//16
int num8 = 020;//16
int num16 = 0x10;//16
System.out.println(num2 + num8 + num16);//48
如果是将一个常用进制的数字字符串转化为十进制数字,可使用Integer.valueOf(进制字符串,进制数字)
或Integer.parseInt(进制字符串,进制数字)
方法:
System.out.println(Integer.valueOf("10000", 2));//16
System.out.println(Integer.valueOf("20", 8));//16
System.out.println(Integer.valueOf("10", 16));//16
System.out.println(Integer.parseInt("10000", 2));//16
System.out.println(Integer.parseInt("20", 8));//16
System.out.println(Integer.parseInt("10", 16));//16
4 其它进制
除了常用进制,还有哪些进制?
我们数数用的数字有从0
到9
十个,还有a
到z
26个字母。所谓数字,从广义上讲不过就是数字和字母的组合。如果你需要用的话,从二
到三十六
进制都有(三十六进制也就是将10数字和26个字母都用起来),而且Java已经提供了默认实现。
所以可以将一个十进制数转换为二
到三十六
进制中任意一个,以数字35
为例,转换为其他进制,如下:
for (int i = 2; i <= 36; i++) {
System.out.println("10进制数字 35 转化为 " + i + " 进制:" + Integer.toString(35, i));
}
//10进制数字 35 转化为 2 进制:100011
//10进制数字 35 转化为 3 进制:1022
//10进制数字 35 转化为 4 进制:203
//10进制数字 35 转化为 5 进制:120
//10进制数字 35 转化为 6 进制:55
//10进制数字 35 转化为 7 进制:50
//10进制数字 35 转化为 8 进制:43
//10进制数字 35 转化为 9 进制:38
//10进制数字 35 转化为 10 进制:35
//10进制数字 35 转化为 11 进制:32
//10进制数字 35 转化为 12 进制:2b
//10进制数字 35 转化为 13 进制:29
//10进制数字 35 转化为 14 进制:27
//10进制数字 35 转化为 15 进制:25
//10进制数字 35 转化为 16 进制:23
//10进制数字 35 转化为 17 进制:21
//10进制数字 35 转化为 18 进制:1h
//10进制数字 35 转化为 19 进制:1g
//10进制数字 35 转化为 20 进制:1f
//10进制数字 35 转化为 21 进制:1e
//10进制数字 35 转化为 22 进制:1d
//10进制数字 35 转化为 23 进制:1c
//10进制数字 35 转化为 24 进制:1b
//10进制数字 35 转化为 25 进制:1a
//10进制数字 35 转化为 26 进制:19
//10进制数字 35 转化为 27 进制:18
//10进制数字 35 转化为 28 进制:17
//10进制数字 35 转化为 29 进制:16
//10进制数字 35 转化为 30 进制:15
//10进制数字 35 转化为 31 进制:14
//10进制数字 35 转化为 32 进制:13
//10进制数字 35 转化为 33 进制:12
//10进制数字 35 转化为 34 进制:11
//10进制数字 35 转化为 35 进制:10
//10进制数字 35 转化为 36 进制:z
将一位三十六进制数字转换为十进制
,如下:
String numStr = "";
for (int i = 0; i <= 35; i++) {
if (i <= 9) {
numStr = Character.toString((char) (i + 48));
} else {
numStr = Character.toString((char) (i + 87));
}
System.out.println("36进制数字 " + numStr + " 转化为 10 进制:" + Integer.valueOf(numStr, 36));
}
//36进制数字 0 转化为 10 进制:0
//36进制数字 1 转化为 10 进制:1
//36进制数字 2 转化为 10 进制:2
//36进制数字 3 转化为 10 进制:3
//36进制数字 4 转化为 10 进制:4
//36进制数字 5 转化为 10 进制:5
//36进制数字 6 转化为 10 进制:6
//36进制数字 7 转化为 10 进制:7
//36进制数字 8 转化为 10 进制:8
//36进制数字 9 转化为 10 进制:9
//36进制数字 a 转化为 10 进制:10
//36进制数字 b 转化为 10 进制:11
//36进制数字 c 转化为 10 进制:12
//36进制数字 d 转化为 10 进制:13
//36进制数字 e 转化为 10 进制:14
//36进制数字 f 转化为 10 进制:15
//36进制数字 g 转化为 10 进制:16
//36进制数字 h 转化为 10 进制:17
//36进制数字 i 转化为 10 进制:18
//36进制数字 j 转化为 10 进制:19
//36进制数字 k 转化为 10 进制:20
//36进制数字 l 转化为 10 进制:21
//36进制数字 m 转化为 10 进制:22
//36进制数字 n 转化为 10 进制:23
//36进制数字 o 转化为 10 进制:24
//36进制数字 p 转化为 10 进制:25
//36进制数字 q 转化为 10 进制:26
//36进制数字 r 转化为 10 进制:27
//36进制数字 s 转化为 10 进制:28
//36进制数字 t 转化为 10 进制:29
//36进制数字 u 转化为 10 进制:30
//36进制数字 v 转化为 10 进制:31
//36进制数字 w 转化为 10 进制:32
//36进制数字 x 转化为 10 进制:33
//36进制数字 y 转化为 10 进制:34
//36进制数字 z 转化为 10 进制:35
Java实现的默认进制计数法中,字符串不区分大小写,比如36进制的
z
和Z
表示同一个数字35