【目录】
1. 进制的概念
2. 进制的表示
3. 其它进制转十进制:乘权法
4. 十进制转其它进制:短除法
5. 转二进制
5.1 十六进制转二进制:四分法
5.2 八进制转二进制:三分法
6. 二进制转其它进制
6.1 二进制转十六进制:四分法
6.2 二进制转八进制:三分法
6.3 二进制转10进制:乘权法
7. 凑权法:十进制转二进制
8. 总结
【正文】
软件设计师考试学习笔记 第一章 计算机组成与体系结构 考试分值约6分。
1. 进制的概念
本节的目标任务是熟练掌握各种进制之间的转换。
进制是一种表示数字的方式,常见的进制有十进制、二进制、八进制和十六进制。
每种进制都有自己的数码、基数和位权。
【数码】
数码是指在某一进制下可以使用的数字符号。
在二进制中,数码是0和1。 在八进制中,数码是0到7。 在十进制中,数码是0到9。 在十六进制中,数码是0到9以及A到F。
十进制数10在十六进制中表示为A。
十进制数11在十六进制中表示为B。
十进制数12在十六进制中表示为C。
十进制数13在十六进制中表示为D。
十进制数14在十六进制中表示为E。
十进制数15在十六进制中表示为F。
10-A 11-B 12-C 13-D 14-E 15-F
【基数】
基数是指每一位上所能表示的数码的个数。
在二进制中,基数为2。 在八进制中,基数为8。 在十进制中,基数为10。 在十六进制中,基数为16。
【位权】
位权是指每一位上的数码所代表的数值大小。
在二进制中,位权是2的幂次方。 在八进制中,位权是8的幂次方。 在十进制中,位权是10的幂次方。 在十六进制中,位权是16的幂次方。
小数点前位权是从0开始的,小数点后位权从-1开始。
【示例】
在十进制中,数字1234.56表示:
小数点前位权是从0开始。
1个千位上的1乘以1000,即位权为10的3次方。 2个百位上的2乘以100,即位权为10的2次方。 3个十位上的3乘以10,即位权为10的1次方。 4个个位上的4乘以1,即位权为10的0次方。
小数点后位权从-1开始。
5乘以0.1,即位权为10的-1次方。 6乘以0.01,即位权为10的-2次方。
1234.56 = 1*10^3 + 2*10^2 + 3*10^1 + 4*10^0 + 5*10^-1 + 6*10^-2
2. 进制的表示
二进制(Binary)用字母B
表示。
八进制(Octal)用字母O
表示。
十进制(Decimal)用字母D
表示,通常没有字母的数字则默认为十进制。
十六进制(Hexadecimal)用字母H
表示。
【示例】
1234表示十进制。
1234H表示十六进制。
3. 其它进制转十进制:乘权法
乘权法:把每一位数和当前位的权值
相乘后的结果累加起来。
【目标任务】
将111B转换成十进制。
将111O转换成十进制。
将111H转换成十进制。
111B = 1*2^2 + 1*2^1 + 1*2^0
= 4 + 2 +1=7
111O = 1*8^2 + 1*8^1 + 1*8^0
= 64 + 8 +1=73
111H= 1*16^2 + 1*16^1 + 1*16^0
= 256 + 16 + 1 = 273
【思路解析】
以二进制转10进制为例:
先把要转换的数拆开: 1 1 1
二进制位权为2: 1*2 + 1*2 +1*2
根据每个数的顺序确定幂次方: 1*2^2 + 1*2^1 +1*2^0
【课堂练习】
将10100.01B转换成十进制。
先把要转换的数拆开: 1 0 1 0 0 0 1
二进制位权为2: 1*2 0*2 1*2 0*2 0*2 0*2 1*2
根据顺序确定幂次方: 1*2^4 + 0*2^3 + 1*2^2 + 0*2^1 + 0*2^0+ 0*2^-1 + 1*2^-2
4. 十进制转其它进制:短除法
短除法:循环除基数直到商为0,从下往上
取余数。
确定目标进制:确定要将十进制数转换为哪种进制,如二进制、八进制或十六进制等。
进行除法运算:将十进制数不断除以目标进制的基数,直到商为0为止。
反向排列:将得到的余数按照
从下往上
的顺序进行排列。如果目标进制是十六进制,需要将余数10、11、12、13、14、15分别表示为A、B、C、D、E、F。
【10转2除2】
要转换的数是27。
目标进制为二进制,则除以2。
27 ÷ 2 = 13 余 1 13 ÷ 2 = 6 余 1 6 ÷ 2 = 3 余 0 3 ÷ 2 = 1 余 1 1 ÷ 2 = 0 余 1
余数按照从下到上
的顺序排列,即可得到二进制数11011。
【10转8除8】
目标进制为八进制,则除以8。
27 ÷ 8 = 3 余 3 3 ÷ 8 = 0 余 3
余数按照从下到上
的顺序排列得到八进制数:33
【10转16除以16】
目标进制为十六进制,则除以16。
27 ÷ 16 = 1 余 11 1 ÷ 16 = 0 余 1
余数按照从下到上
的顺序排列得到十六进制数:1B
5. 转二进制
5.1 十六进制转二进制:四分法
2^4=16
首先将十六进制数的每一位转换为对应的四位二进制数。
将每一位的二进制数连接起来,即可得到转换后的二进制数。
0 对应 0000 1 对应 0001 2 对应 0010 3 对应 0011 4 对应 0100 5 对应 0101 6 对应 0110 7 对应 0111 8 对应 1000 9 对应 1001 A 对应 1010 B 对应 1011 C 对应 1100 D 对应 1101 E 对应 1110 F 对应 1111
【目标任务】
将十六进制数 3A
转换为二进制数。
【思路解析】
首先,将十六进制数的每一位转换为对应的四位二进制数:
3 -> 0011
A -> 1010
然后,将每一位的二进制数连接起来:
0011 1010
十六进制数 3A
转换为二进制数为 00111010
【课堂练习】
将90H转换为二进制。
【思路解析】
0转换为4位二进制:0000
9转换为4位二进制:1001
90H=10010000B
5.2 八进制转二进制:三分法
2^3=8
首先将八进制数的每一位转换为对应的三位二进制数。
将每一位的三位二进制数拼接起来,得到最终的二进制数。
0 对应 000 1 对应 001 2 对应 010 3 对应 011 4 对应 100 5 对应 101 6 对应 110 7 对应 111
【目标任务】
将八进制数37转换为二进制数。
【思路解析】
首先,将八进制的每一位转换为对应的三位二进制数:
7 -> 111
3 -> 011
然后,将每一位的二进制数连接起来:
011 111
八进制数 37
转换为二进制数为 011111
3转换为3位二进制:011
7转换为3位二进制:111
37O=011111
6. 二进制转其它进制
6.1 二进制转十六进制:四分法
将二进制数从右向左每4位分组,不足4位的在左边补0。
将每个4位二进制数转换为对应的十六进制数。
将得到的十六进制数按照从左到右的顺序排列,即为最终的十六进制表示。
【目标任务】
将二进制数110110101转换为十六进制数。
【思路解析】
4个数为一组,分组得到:11、0110、1010
11 = 1*2^1 + 1*2^0
= 3
0110 = 1*2^2 + 1*2^1
=6
1010 = 1*2^3 + 1*2^1
= 10 = A
将每个4位的二进制数转换为对应的十六进制数,得到3、6、A。
将得到的十六进制数按照从左到右的顺序排列,即得到最终结果为36A。
6.2 二进制转八进制:三分法
将二进制数从右向左每3位分组,不足3位的在左边补0。
将每个3位二进制数转换为对应的八进制数。
将得到的八进制数按照从左到右的顺序排列,即为最终的八进制表示。
【目标任务】
将二进制数110101转换为八进制数。
【思路解析】
3个数为一组,分组得到:110、101
110 = 1*2^2 + 1*2^1
= 6
101 = 1*2^2 + 1*2^0
=5
将每个3位的二进制数转换为对应的八进制数,得到6、5。
将得到的八进制数按照从左到右的顺序排列,即得到最终结果为65。
6.3 二进制转10进制:乘权法
111B = 1*2^2 + 1*2^1 + 1*2^0
= 4 + 2 +1=7
7. 凑权法:十进制转二进制
凑权法的前提是熟悉2的幂次方的值。
【目标任务】
用凑权法将7和94转换为2进制。
7 = 4+2+1=2^2+2^1+2^0
=111
94 = 64+16+8+4+2=2^6+2^4+2^3+2^2+2^1
=1011110
以94转二进制为例:
2的幂次方中最接近94的是64,即2^6
。
94-64=30。
在上述表中凑够一个30,16+8+4+2即2^4 2^3 2^2 2^1
【课堂练习】
用凑权法将192转换为二进制。
【解析】
2的幂次方中最接近192的是128,即2^7
。
192-128=64,64即2^6
。
答案为:11000000
8. 总结
其它进制转10进制用 乘法
,乘权值
111B = 1*2^2 + 1*2^1 + 1*2^0
= 4 + 2 +1=7
111O = 1*8^2 + 1*8^1 + 1*8^0
= 64 + 8 +1=73
111H= 1*16^2 + 1*16^1 + 1*16^0
= 256 + 16 + 1 = 273
10进制转其它进制用 除法
,转几除几
27 ÷ 2 = 13 余 1
13 ÷ 2 = 6 余 1
6 ÷ 2 = 3 余 0
3 ÷ 2 = 1 余 1
1 ÷ 2 = 0 余 1
余数按照从下到上
的顺序排列,即可得到二进制数11011。
其它进制转2进制
16转2用4分:2^4
8转2用3分:2^3
10转2用除法
0转换为4位二进制:0000
9转换为4位二进制:1001
90H=10010000B
2进制转其它进制
2转16用4分
2转8用3分
2转10用乘法
4个数为一组,分组得到:11、0110、1010
11 = 1*2^1 + 1*2^0
= 3
0110 = 1*2^2 + 1*2^1
=6
1010 = 1*2^3 + 1*2^1
= 10 = A
将每个4位的二进制数转换为对应的十六进制数,得到3、6、A。
将得到的十六进制数按照从左到右的顺序排列,即得到最终结果为36A。