微机原理第1章-数制
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在计算机中,一个二进制数可以用下标2表示,也可以用后缀B( Binary)表示,如(1010.01)2 、1010.01B。
一个字节的二进制数的位权: 27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 1 (1001 0101)2=(128+16+4+1)10=(149)10
36
一个字节的原码,表示的数据范围为: 11111111~01111111,即-127~+127。
00000111 00000110
+7 +6
00000101 00000100
00000011 00000010 00000001 00000000 10000000 10000001 10000010 10000011 10000100 10000101 10000110 10000111
位权:16 i
表示形式:H 位权 163 4096 162 256
3FC.6H或(3FC.6)16
161 16 160 1 16-1 .0625 16-2 .00390625
3FC.6 =3×162+F×161+C×160+6×16-1
=1020.375
基数为R的R进制: R个基本符号: 0,1,2,…,n 位权:Ri
分析笔算乘法
1010 × 1001 1010 0000 0000 1010 1011010 被乘数 乘 数 部分积
乘 积
D7 D6 D5 D4 D3 D2 D1 D0
即1010B×1001B=1011010B。
B7 b6 b5 b4 b3 b2 b1 b0
1 1 0 0101 1
26
移位加
乘数 被乘数 1010 部分积 0000
15
2. 十进制数到非十进制数的转换
转换为二进制, 对整数:除2取余; 对小数:乘2取整。
转换为十六进制, 对整数:除16取余; 对小数:乘16取整。
整数部分 小数部分
余数
低位
高位
2 115 2 57 2 28 2 14 2 7 2 3 2 1 0
1 1 0 0 1 1 1
高位
0.75 2 × 1.5 0.5 2 × 1.0
无符号二进制数的除法运算有可能产生溢出,当除数较小时,运算
结果可能超出微处理器为除法运算结果准备的存储空间,从而溢出 。除法溢出时微处理器会产生溢出中断,提醒程序员程序出错。
33
知识点1.3.3
带符号整数的表示方法:
原码、反码、补码
34
带符号数的表示方法
【例1-17】 十进制 +1 -1 +79 -79 0 0 二进制 +1 -1 + 1001111 - 1001111 0 0000000 1 0000000 符号数值化 0 0000001 1 0000001 0 1001111 1 1001111
知识点1.2
计算机中的数据
1
计算机中使用的数据形式有:
1.无符号整数
2.有符号整数
3.浮点数
4.ASCII码
5.Unicode码 6.BCD码
2
知识点1.2.1
数制
在数字逻辑电路中,只有高电平与低电平两个稳定状态。如果用高电平表
示1、用低电平表示0,数字逻辑电路就可以表示二进制数。计算机由数字
逻辑电路组成,所以计算机采用二进制。
二进制数的算术运算规则
22
(1)加法运算
0+0=0 0+1=1 1+0=1 1+1=0(有进位) )B。
【例1】计算01101010B+10110101B=( ? 解:
+ 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0
即: 01101010 B + 10110101B= 100011111 B
32
计算机中,如果加减运算中最高位向前有进位或借位,将使微处理
器标志寄存器中的CF位置1。利用CF位,通过编程可以矫正运算结
果,还可以在8位的微处理器上实现16位、32位或者64位甚至更多 位的二进制数加减运算。
无符号二进制数的乘法运算一般不会产生溢出,因为两个8位数相
乘,乘积不会超出16位二进制数;两个16位数相乘,乘积不会超 出32位。微处理器为乘积准备了足够的存储空间。
对任何一种进位计数制表示的数,都可以按其权展开,写成多 项式之和的形式。(按权展开多项式)
任意一个R进制数N可以表示为:
N=an-1×Rn-1+an-2×Rn-2+…+a1×R1+a0×R0+
a-1×R-1+…+a-m×R-m
i m
i a r i
n 1
其中:ai是数码,R是基数,Ri是位权;
1001
乘数为1,部分积加被乘数, 再将被乘数左移1位
乘数为0,部分积不加 被乘数,被乘数左移1位 乘数为0,部分积不加 被乘数,被乘数左移1位 乘数为1,部分积加 被乘数到部分积上, 再将被乘数左移1位
10100 101000
1010 1010
1010000
10100000
1010 1010 +1010000 1011010
0000 0110 0000 0101
例如:(3FC.6)H =3×162+F×161+C×160+6×16-1 =(1020.375)D
知识点1.2.2
数制转换
14
1. 非十进制转换为十进制
按权表达式展开,再按十进制运算规则求和,即可得到对应的十进制数。
例: (1101.101)2=23+22+2-1+2-3=(13.625)10 (3FC.6)H=3×162+15×161+12×160+6×16-1=(1020.375)D
11000001 01001010 11000001 01001001 01001010 11000001 01001001 01001010 11000001 01001001
计算机中整数以字节形式存在,分为无符号数和有符号数。整数的数据宽度 可以是字节、字、双字、甚至8字节(64位)数据。
21
知识点1.3.1
除法运算是乘法运算的逆运算,无符号数的除法运算可以转换为减法和右 移位运算。
29
知识点1.3.2
无符号整数的算术运算与溢出
30
无符号整数的表示范围及运算溢出判断
一个n位无符号二进制数X,表示数的范围为: 0≤X≤2n-1 例如,一个8位无符号二进制数,表示范围为: 0~28-1, 00H~FFH(0~255) 一个16位无符号二进制数,表示范围为:
3
进位计数制
二进制、十进制、十六进制,都是进位计数制,进位计数制
使用位置表示法,都有数码、位权和基数3个要素。
十进制
数码为:0、1、2、3、4、5、6、7、8、9
基数为:10
表示形式:D 位权
(678.34)D或(678.34)10
权表达式
103 102 101 100 . 10-1 10-2 1000 100 10 1 . 0.1 0.01
0~216-1,即0000H~FFFFH(0~65535)。
31
【例1-16】计算10101011B+11010010B=( ? )B。 171+210=381 10101011
+ 11010010
101111101 运算结果101111101B是9位,超出了8位二进制数的取值范围(0~255),则
18
(4)二进制与八进制间的转换
用3位二进制数表示1位八进制数
(011 100 . 100)2
(3 4 4)8
(5
2 . 7)8
( 101 010 .111)2
19
知识点1.3
二进制整数的算术运算
20
字节 字 双字 四字
01001001 01001010 01001001 01001001 01001001
+5 +4
+3 +2 +1 +0 -0 -1 -2 -3 -4 -5 -6 -7
[+0]原= 0000 0000 [-0 ]原= 1000 0000
(2)反码
对于正数,其反码形式与原码相同,最高位为符号位,其
余位为数值位。
对于负数,将其原码除符号位之外的其余各位按位取反。
真值 +33 -33 +0 -0 +79 -79 原码 0010 0001 1010 0001 0000 0000 1000 0000 0100 1111 1100 1111 反码 0010 0001 1101 1110 0000 0000 1111 1111 0100 1111 1011 0000
无符号数的乘法运算可以转换为加法和左移位的运算。
ຫໍສະໝຸດ Baidu
一个二进制数,每左移一位,相当于乘以2,左移n位就
相当于乘以2n。
28
(4)除法运算 0÷1=0 1÷1=1 [例4] 计算1010 0011B÷1001B= ( ? )B。
1010 0011B÷1001B=
B
除法运算中除数不能为0,否则将引起除法错中断。
最高位被丢弃,这导致运算结果错误,计算机中将这种情况称为溢出。两
个16位二进制数相加,结果有可能超出16位二进制数的取值范围,导致最 高位被丢弃,运算结果溢出。32位、64位的二进制数加法运算都有可能溢
出。
由此可见,在无符号数的加减运算中,如果最高位向前有进位(加法)或 借位(减法),则运算结果产生溢出。
678.34=6×102+7×101+8×100 +3×10-1+4×10-2
数码 基数 位权
[例1-1] 十进制数8347.25权表达式为:
8×103+3×102+4×101+7×100+2×10-1+5×10-2
在计算机中,十进制数8347.25可以表示为: (8347.25)10 或者(8347.25)D 也可用后缀D(decimal)表示:8347.25D 更常见的写法是不加任何表示字符,计算机默认为十进制数。
6
二进制
数码为: 0、1 基数为:2
位权:2 i
表示形式:B 位权: 例如:1011B或(1011)2
… 25 24 23 22 21 20 . 2-1
即: 二进制数1010.01的权表达式为:
2-2
2-3 …
…32 16 8 4 2 1 . 0.5 0.25 0.125 …
1010.01= 23 + 21 + 2-2 =10.25
取整
1 1
低位
16
3. 二进制数与十六进制数之间的转换
用4位二进制数表示1位十六进制数
(0101 1010 . 1000)2
(5 A 8)16
(5
A
. 8)16
( 0101 1010 .1000)2
( F
7 . 2
8)16
(1111 0111.0010 1000)2
17
将二进制数1010110110.101001011 转换为十六进制数。 1010110110.101001011B=2B6.A58H
39
+7
00000111
0000 0111
+6 +5
+4 +3 +2 +1 +0 -0 -1 -2 -3 -4 -5 -6
00000110 00000101
00000100 00000011 00000010 00000001 00000000 10000000 10000001 10000010 10000011 10000100 10000101 10000110
+0 -0
原码、反码和补码
35
(1)原码
最高位为符号位,数值部分为真值的绝对值。 X的原码记为[X]原 。 已知真值 X=+33,Y=-33 ,求[X] 原和[Y]原 解:(+33)10=+100001B, [X]原= 0010 0001 (-33)10 = -100001B ,[Y]原= 1010 0001 [X]原= 0000 0000 0010 0001 [Y]原= 1000 0000 0010 0001
1
0
0
0
1
1
1
1
1
23
(2)减法运算
0-0=0 1-0=1 1-1=0 0-1=1(有借位)
【例2】计算10010101B-01101010B=( ? )B。 解:
1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0
即:10010101B-01101010B=00101011B
0
0
1
0
1
8
0.101101 . 2-1 2-2 2-3 2-4
0.5 0.25 0.125 0.0625 0.03125 0.015625
2-5
2-6
0.101101=0.5+0.125+0.0625+0.015625=0.703125
9
十六进制
数码为: 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 基数为:16
0
1
1
24
(3)乘法运算
0×0=0 1×0=0 0×1=0 1×1=1
分析笔算乘法 [例3]计算1010B×1001B= ( ? )B。
1010 被乘数 × 1001 乘 数 1010 部分积 0000 0000 1010 1011010 乘 积 即1010B×1001B=1011010B
25
一个字节的二进制数的位权: 27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 1 (1001 0101)2=(128+16+4+1)10=(149)10
36
一个字节的原码,表示的数据范围为: 11111111~01111111,即-127~+127。
00000111 00000110
+7 +6
00000101 00000100
00000011 00000010 00000001 00000000 10000000 10000001 10000010 10000011 10000100 10000101 10000110 10000111
位权:16 i
表示形式:H 位权 163 4096 162 256
3FC.6H或(3FC.6)16
161 16 160 1 16-1 .0625 16-2 .00390625
3FC.6 =3×162+F×161+C×160+6×16-1
=1020.375
基数为R的R进制: R个基本符号: 0,1,2,…,n 位权:Ri
分析笔算乘法
1010 × 1001 1010 0000 0000 1010 1011010 被乘数 乘 数 部分积
乘 积
D7 D6 D5 D4 D3 D2 D1 D0
即1010B×1001B=1011010B。
B7 b6 b5 b4 b3 b2 b1 b0
1 1 0 0101 1
26
移位加
乘数 被乘数 1010 部分积 0000
15
2. 十进制数到非十进制数的转换
转换为二进制, 对整数:除2取余; 对小数:乘2取整。
转换为十六进制, 对整数:除16取余; 对小数:乘16取整。
整数部分 小数部分
余数
低位
高位
2 115 2 57 2 28 2 14 2 7 2 3 2 1 0
1 1 0 0 1 1 1
高位
0.75 2 × 1.5 0.5 2 × 1.0
无符号二进制数的除法运算有可能产生溢出,当除数较小时,运算
结果可能超出微处理器为除法运算结果准备的存储空间,从而溢出 。除法溢出时微处理器会产生溢出中断,提醒程序员程序出错。
33
知识点1.3.3
带符号整数的表示方法:
原码、反码、补码
34
带符号数的表示方法
【例1-17】 十进制 +1 -1 +79 -79 0 0 二进制 +1 -1 + 1001111 - 1001111 0 0000000 1 0000000 符号数值化 0 0000001 1 0000001 0 1001111 1 1001111
知识点1.2
计算机中的数据
1
计算机中使用的数据形式有:
1.无符号整数
2.有符号整数
3.浮点数
4.ASCII码
5.Unicode码 6.BCD码
2
知识点1.2.1
数制
在数字逻辑电路中,只有高电平与低电平两个稳定状态。如果用高电平表
示1、用低电平表示0,数字逻辑电路就可以表示二进制数。计算机由数字
逻辑电路组成,所以计算机采用二进制。
二进制数的算术运算规则
22
(1)加法运算
0+0=0 0+1=1 1+0=1 1+1=0(有进位) )B。
【例1】计算01101010B+10110101B=( ? 解:
+ 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0
即: 01101010 B + 10110101B= 100011111 B
32
计算机中,如果加减运算中最高位向前有进位或借位,将使微处理
器标志寄存器中的CF位置1。利用CF位,通过编程可以矫正运算结
果,还可以在8位的微处理器上实现16位、32位或者64位甚至更多 位的二进制数加减运算。
无符号二进制数的乘法运算一般不会产生溢出,因为两个8位数相
乘,乘积不会超出16位二进制数;两个16位数相乘,乘积不会超 出32位。微处理器为乘积准备了足够的存储空间。
对任何一种进位计数制表示的数,都可以按其权展开,写成多 项式之和的形式。(按权展开多项式)
任意一个R进制数N可以表示为:
N=an-1×Rn-1+an-2×Rn-2+…+a1×R1+a0×R0+
a-1×R-1+…+a-m×R-m
i m
i a r i
n 1
其中:ai是数码,R是基数,Ri是位权;
1001
乘数为1,部分积加被乘数, 再将被乘数左移1位
乘数为0,部分积不加 被乘数,被乘数左移1位 乘数为0,部分积不加 被乘数,被乘数左移1位 乘数为1,部分积加 被乘数到部分积上, 再将被乘数左移1位
10100 101000
1010 1010
1010000
10100000
1010 1010 +1010000 1011010
0000 0110 0000 0101
例如:(3FC.6)H =3×162+F×161+C×160+6×16-1 =(1020.375)D
知识点1.2.2
数制转换
14
1. 非十进制转换为十进制
按权表达式展开,再按十进制运算规则求和,即可得到对应的十进制数。
例: (1101.101)2=23+22+2-1+2-3=(13.625)10 (3FC.6)H=3×162+15×161+12×160+6×16-1=(1020.375)D
11000001 01001010 11000001 01001001 01001010 11000001 01001001 01001010 11000001 01001001
计算机中整数以字节形式存在,分为无符号数和有符号数。整数的数据宽度 可以是字节、字、双字、甚至8字节(64位)数据。
21
知识点1.3.1
除法运算是乘法运算的逆运算,无符号数的除法运算可以转换为减法和右 移位运算。
29
知识点1.3.2
无符号整数的算术运算与溢出
30
无符号整数的表示范围及运算溢出判断
一个n位无符号二进制数X,表示数的范围为: 0≤X≤2n-1 例如,一个8位无符号二进制数,表示范围为: 0~28-1, 00H~FFH(0~255) 一个16位无符号二进制数,表示范围为:
3
进位计数制
二进制、十进制、十六进制,都是进位计数制,进位计数制
使用位置表示法,都有数码、位权和基数3个要素。
十进制
数码为:0、1、2、3、4、5、6、7、8、9
基数为:10
表示形式:D 位权
(678.34)D或(678.34)10
权表达式
103 102 101 100 . 10-1 10-2 1000 100 10 1 . 0.1 0.01
0~216-1,即0000H~FFFFH(0~65535)。
31
【例1-16】计算10101011B+11010010B=( ? )B。 171+210=381 10101011
+ 11010010
101111101 运算结果101111101B是9位,超出了8位二进制数的取值范围(0~255),则
18
(4)二进制与八进制间的转换
用3位二进制数表示1位八进制数
(011 100 . 100)2
(3 4 4)8
(5
2 . 7)8
( 101 010 .111)2
19
知识点1.3
二进制整数的算术运算
20
字节 字 双字 四字
01001001 01001010 01001001 01001001 01001001
+5 +4
+3 +2 +1 +0 -0 -1 -2 -3 -4 -5 -6 -7
[+0]原= 0000 0000 [-0 ]原= 1000 0000
(2)反码
对于正数,其反码形式与原码相同,最高位为符号位,其
余位为数值位。
对于负数,将其原码除符号位之外的其余各位按位取反。
真值 +33 -33 +0 -0 +79 -79 原码 0010 0001 1010 0001 0000 0000 1000 0000 0100 1111 1100 1111 反码 0010 0001 1101 1110 0000 0000 1111 1111 0100 1111 1011 0000
无符号数的乘法运算可以转换为加法和左移位的运算。
ຫໍສະໝຸດ Baidu
一个二进制数,每左移一位,相当于乘以2,左移n位就
相当于乘以2n。
28
(4)除法运算 0÷1=0 1÷1=1 [例4] 计算1010 0011B÷1001B= ( ? )B。
1010 0011B÷1001B=
B
除法运算中除数不能为0,否则将引起除法错中断。
最高位被丢弃,这导致运算结果错误,计算机中将这种情况称为溢出。两
个16位二进制数相加,结果有可能超出16位二进制数的取值范围,导致最 高位被丢弃,运算结果溢出。32位、64位的二进制数加法运算都有可能溢
出。
由此可见,在无符号数的加减运算中,如果最高位向前有进位(加法)或 借位(减法),则运算结果产生溢出。
678.34=6×102+7×101+8×100 +3×10-1+4×10-2
数码 基数 位权
[例1-1] 十进制数8347.25权表达式为:
8×103+3×102+4×101+7×100+2×10-1+5×10-2
在计算机中,十进制数8347.25可以表示为: (8347.25)10 或者(8347.25)D 也可用后缀D(decimal)表示:8347.25D 更常见的写法是不加任何表示字符,计算机默认为十进制数。
6
二进制
数码为: 0、1 基数为:2
位权:2 i
表示形式:B 位权: 例如:1011B或(1011)2
… 25 24 23 22 21 20 . 2-1
即: 二进制数1010.01的权表达式为:
2-2
2-3 …
…32 16 8 4 2 1 . 0.5 0.25 0.125 …
1010.01= 23 + 21 + 2-2 =10.25
取整
1 1
低位
16
3. 二进制数与十六进制数之间的转换
用4位二进制数表示1位十六进制数
(0101 1010 . 1000)2
(5 A 8)16
(5
A
. 8)16
( 0101 1010 .1000)2
( F
7 . 2
8)16
(1111 0111.0010 1000)2
17
将二进制数1010110110.101001011 转换为十六进制数。 1010110110.101001011B=2B6.A58H
39
+7
00000111
0000 0111
+6 +5
+4 +3 +2 +1 +0 -0 -1 -2 -3 -4 -5 -6
00000110 00000101
00000100 00000011 00000010 00000001 00000000 10000000 10000001 10000010 10000011 10000100 10000101 10000110
+0 -0
原码、反码和补码
35
(1)原码
最高位为符号位,数值部分为真值的绝对值。 X的原码记为[X]原 。 已知真值 X=+33,Y=-33 ,求[X] 原和[Y]原 解:(+33)10=+100001B, [X]原= 0010 0001 (-33)10 = -100001B ,[Y]原= 1010 0001 [X]原= 0000 0000 0010 0001 [Y]原= 1000 0000 0010 0001
1
0
0
0
1
1
1
1
1
23
(2)减法运算
0-0=0 1-0=1 1-1=0 0-1=1(有借位)
【例2】计算10010101B-01101010B=( ? )B。 解:
1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0
即:10010101B-01101010B=00101011B
0
0
1
0
1
8
0.101101 . 2-1 2-2 2-3 2-4
0.5 0.25 0.125 0.0625 0.03125 0.015625
2-5
2-6
0.101101=0.5+0.125+0.0625+0.015625=0.703125
9
十六进制
数码为: 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 基数为:16
0
1
1
24
(3)乘法运算
0×0=0 1×0=0 0×1=0 1×1=1
分析笔算乘法 [例3]计算1010B×1001B= ( ? )B。
1010 被乘数 × 1001 乘 数 1010 部分积 0000 0000 1010 1011010 乘 积 即1010B×1001B=1011010B
25