进制转换整理
2进制Binary/Bin:每一位可以有两个数字之一,0和1;
8进制Octal/Oct:每一位可以有八个数字之一,0,1,2,3,4,5,6,7
10进制Decimal/Dec:每一位可以有十个数字之一,0,1,2,3,4,5,6,7,8,9
16进制Hexadecimal/Hex:每一位可以有十六个数字之一,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
进制转换的基础:10进制(生活中常用)、2进制(计算机内部常用)。
十进制的剖析:以53为例,也就是
5
∗
10
+
3
5*10+3
5∗10+3;456就是
4
∗
100
+
5
∗
10
+
6
4*100+5*10+6
4∗100+5∗10+6;
进而可以表示成
5
∗
1
0
1
+
3
∗
1
0
0
5*10^1+3*10^0
5∗101+3∗100和
4
∗
1
0
2
+
5
∗
1
0
1
+
6
∗
1
0
0
4*10^2+5*10^1+6*10^0
4∗102+5∗101+6∗100
我们可以把形如
1
0
2
10^2
102叫做这一位数字对应的权重。
如何将其他进制转换成十进制?
如二进制
110101
110101
110101。我们就可以每一位的数字,乘以其对应的权重。
也就是
1
∗
2
5
+
1
∗
2
4
+
0
∗
2
3
+
1
∗
2
2
+
0
∗
2
1
+
1
∗
2
0
=
2
5
+
2
4
+
2
2
+
2
0
=
53
1*2^5+1*2^4+0*2^3+1*2^2+0*2^1+1*2^0=2^5+2^4+2^2+2^0=53
1∗25+1∗24+0∗23+1∗22+0∗21+1∗20=25+24+22+20=53
类似,我们也可以把53这样拆解
53
=
32
+
16
+
4
+
1
=
2
5
+
2
4
+
2
2
+
2
0
=
(
110101
)
2
53=32+16+4+1=2^5+2^4+2^2+2^0=(110101)_2
53=32+16+4+1=25+24+22+20=(110101)2
同理,53也可以转换成8、16进制的 ( 65 ) 8 (65)_8 (65)8和 ( 35 ) 1 6 (35)_16 (35)16
拆解的过程中,我们会发现53不能减去64,减去8也不行,而是48(6*8),也就是
53
=
6
∗
8
1
+
5
∗
8
0
53=6*8^1+5*8^0
53=6∗81+5∗80
换而言之,我们得到了另外一种解法,也就是53除以8=6余5,写上5;最后6除8=0余6,写上6,得到65。
435/8=54余3,最后一位也即是3;54/8=6余6,写6;6/8=0余6,写6。得到663。
435转换16进制也是同理。435除以16,得27余3,最后一位写3;27除以16,得到1余11,写上11(B);最后1除以16余1,写上1,也就是1B3。
2、8、16进制快速转换:基于2进制
| 十进制 | 二进制 | 八进制 | 十六进制|
|–|–|–|–|–|
| 0 | 0 | 0 | 0
| 1 | 1 | 1 | 1
| 2 | 10 | 2 | 2
| 3 | 11 | 3 | 3
| 4 | 100 | 4 | 4
| 5 | 101 | 5 | 5
| 6 | 110 | 6 | 6
| 7 | 111 | 7 | 7
| 8 | 1000 | 10 | 8
| 9 | 1001 | 11 | 9
| 10 | 1010 | 12 | A
| 11 | 1011 | 13 | B
| 12 | 1100 | 14 | C
| 13 | 1101 | 15 | D
| 14 | 1110 | 16 | E
| 15 | 1111 | 17 | F
八进制663,转换为二进制可直接查表:(每一位八进制数转为三位二进制数,前面补上0)
110 110 011;从右往左,每四位分开并高位补0得到0001 1011 0011;
查表转回,得到1B3。