(二、八、十、十六)进制转换

3.1 进制转换

内容导视:

  • 二进制与十进制互转
  • 二进制与八进制互转

常用进制如下:

  • 二进制:0、1,满 2 进 1

  • 十进制:0 ~ 9,满 10 进 1

  • 八进制:0 ~ 7,满 8 进 1

  • 十六进制:0 ~ F,满 16 进 1

十六进制中,超过 9 的部分与十进制的对应关系,A:10,B:11,C:12,D:13,E:14,F:15。

码 3.1-1 加前缀表明进制
89:十进制
0b100:二进制的前面加上 0b
015 :八进制的前面加上 0
0xFF:十六进制的前面加上 0x

3.1.1 二进制与十进制互转

二进制转十进制

将每位上的数乘以 2 的(所处位数 - 1)次方,求和。

例 1:0b100 转为十进制

0b100 = 
	1 * 2 ^ 2
+   0 * 2 ^ 1
+   0 * 2 ^ 0
=   4
所以 0b100 对应的十进制为 4

例 2:0b10101010 转为十进制

由于 0 乘以什么都是 0,故而省去。

0b10101010 = 
	1 * 2 ^ 7
+   1 * 2 ^ 5
+   1 * 2 ^ 3
+   1 * 2 ^ 1
= 128 + 32 + 8 + 2
= 170
所以 0b10101010 对应的十进制为 170

十进制转二进制

十进制数除以 2 得到商,再将商除以 2,如此反复,直到商为 0,然后将每步得到的余数倒过来,就是对应的二进制。

例 1:5 转为二进制

5/2,商 2,余 1
2/2,商 1,余 0
1/2,商 0,余 1
所以 5 对应的二进制为 0b101

例 2:147 转为二进制

147/2,商 73,余 1
73/2,商 36,余 1
36/2,商 18,余 0
18/2,商 9,余 0
9/2,商 4,余 1
4/2,商 2,余 0
2/2,商 1,余 0
1/2,商 0,余 1
所以 147 对应的二进制为 0b10010011

十进制与八进制互转、十进制与十六进制互转,类似于十进制与二进制互转,只不过把 2 换成 8、16 而已。

例 3:0124 转十进制

0124 = 
	1 * 8 ^ 2
+   2 * 8 ^ 1
+   4 * 8 ^ 0
= 64 + 16 + 4
= 84
所以 0124 对应的十进制为 84

例 4:241 转十六进制

241/16,商 15,余 1
15/16,商 0,余 F
所以 241 对应的十六进制为 0xF1

3.1.2 二进制与八进制互转

二进制转八进制

0b000 ~ 0b111 对应 0 ~ 7,每三位二进制数可以表示 0 ~ 7 之间的数,即一个八进制数。

从右边开始,二进制数每三位一组,转成对应的八进制数,不够三位补 0,拼起来即可:

0b000       0
0b001       1
0b010       2
0b011       3
0b100       4
0b101       5
0b110       6
0b111       7
0b001000    10
0b001001    11
...
0b111111    77

例 1:0b11101 转为八进制

101:5
011:3
所以 0b11101 对应的八进制数为 035

例 2:0b101111011 转为八进制

011:3
111:7
101:5
所以 0b101111011 对应的八进制数为 0573

八进制转二进制

上述的逆过程,将八进制的每位,转成对应的一个 3 位的二进制数,拼起来即可。

例 1:0241 转为二进制数

0241
2:010
4:100
1:001
所以 0241 对应的二进制是 0b10100001

例 2:02371 转为二进制数

02371
2:010
3:011
7:111
1:001
所以 02371 对应的二进制数为 0b10011111001

同理二进制与十六进制转换,由于 0b0000 ~ 0b1111 对应 0 ~ 15,每 4 位二进制数可以表示 1 个十六进制数。

0b0000        0x0
0b0001        0x1
0b0010        0x2
0b0011        0x3
0b0100        0x4
0b0101        0x5
0b0110        0x6
0b0111        0x7
0b1000        0x8
0b1001        0x9
0b1010        0xA
0b1011        0xB
0b1100        0xC
0b1101        0xD
0b1110        0xE
0b1111        0xF
0b00010000    0x10
...
0b11111111    0xFF

例 3:0b111101010 转为十六进制

1010:A
1110:E
0001:1
0b111101010 对应的十六进制为 0x1EA

例 4:0xFAD8 转为二进制

F:1111
A:1010
D:1101
8:1000
所以 0xFAD8 对应的二进制为 0b1111101011011000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值