logo头像
Snippet 博客主题

【JavaSe必知必会】07-进制的转换

前言

在上一节的文章中我们讲解了进制的概述与不同进制的表现形式,我猜肯定还有很多人懵懵懂懂的。老铁,莫慌,这是正常现象,接着往下看,你会发现,进制这小子算个啥子咧!

其他进制到十进制

通过十进制推出结论

1
2
3
4
5
6
7
8
9
10
11
12
13
14
其他进制到十进制的转换

十进制 十进制
12345 = 10000 + 2000 + 300 + 40 + 5
= 1*10^4 + 2*10^3 + 3*10^2 + 4*10^1 +5*10^0
= 10000 + 2000 + 300 + 40 + 5
= 12345

系数:每一个位上的数据值本身就是系数
基数:x进制的基数就是x
权:我们针对每一个位上的数据进行编号,从右边,并且是从0开始编号,
这个编号就是该位上的数据的权值

每一个位上的系数*基数^权次幂相加

把0b100,0100,0x100转换成十进制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
二进制:100						十进制:4
100 =1*2^2 + 0*2^1 + 0*2^0
=4 + 0 + 0
=4

八进制:100 十进制:64
100 =1*8^2 + 0*8^1 + 0*8^0
=64 + 0 + 0
=64

十六进制:100 十进制:256
100 =1*16^2 + 0*16^1 + 0*16^0
=256 + 0 + 0
=256

十进制到其他进制

通过十进制推出结论

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
十进制转其他进制
除基取余,直到商为0,余数反转


十进制 十进制
12345 12345

商 余数
12345
————— = 1234 % 5
10

1234
————— = 123 % 4
10

123
————— = 12 % 3
10

12
————— = 1 % 2
10

1
————— = 0 % 1
10

十进制:20 二进制:10100

20
——— = 10 % 0
2

10
——— = 5 % 0
2

5
——— = 2 % 1
2

2
——— = 1 % 0
2

1
——— = 0 % 1
2

结论:==除基取余,直到商为0,余数反转==。

十进制和二进制的快速转换

8421码

8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。
在这种编码方式中每一位二进制代码的1都是代表一个固定数值,
把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。

1
2
3
4
5
6
7
8
9
10
11
12
二进制	1		1		1		1		1		1		1		1
十进制 128 64 32 16 8 4 2 1

二进制到十进制的转换:
1010100 = 64 + 16 + 4 = 84

十进制到二进制的转换:
100 = 0b1100100

问题:任意的x进制到y进制的转换,如何转?
x进制 ---> 十进制
十进制 ---> y进制

二进制和八进制,十六进制如何转换

  1. 以十进制作为桥梁
  2. 二进制到八进制 3位组合
  3. 二进制到十六进制 4位组合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
二进制到八进制,十六进制
A:二进制到十进制,十进制到八进制或十六进制
B:拆分组合法

0b1011001 八进制
方式1:
0b1011001 = 64+16+8+1 =89
89 = 0131
89/8=11 1
11/8=1 3
1/8=0 1
方式2:
0b1011001
001 011 001
1 3 1
0131
微信打赏

赞赏是不耍流氓的鼓励