第一章 基本知识
1,1 概述
1,1,1 数字系统
? 数字系统
? 对数字信号进行加工、传递和存储的实体,它由实现各种
功能的数字逻辑电路相互连接而成。
? 数字信号
? 连续信号 模拟信号
? 离散信号 数字信号
? 数字逻辑电路
? 工作信号:二值信号
? 器件工作状态:开关状态
? 电路结构简单、功耗低、便于集成制造
? 工作速度快、精度高、功能强、可靠性好
1,1,2 模拟与数字( Analog vs Digital)
模拟量
? 连续的
? 时间上的连续
? 任意时刻有一个相对的值
? 量上的连续
? 变量任意时刻可以是在一定范围内的任意值
例如,电压,电流,温度,亮度,压力等
缺点
? 很难度量
? 容易受噪声的干扰
? 难以保存
? 优点:用精确的值表示事物
真实的世界是模拟的!
1,1,2 模拟与数字( Analog vs Digital)
? 数字量
? 非连续的(离散的)
? 时间上的离散
? 变量只在某些时刻有定义
? 量上的离散
? 变量只能是有限集合的一个值
如成绩记录、产品统计、开关状态等
优点
? 更多的灵活性,更快,更精确的计算
? 存储方便
? 可监测和修正
? 容易最小化
1,1,3 数字逻辑电路的类型和研究方法
1,数字逻辑电路的类型
根据电路有无记忆功能,可将数字逻辑电路分为两类:
? 组合逻辑电路
输出是输入的逻辑函数
输入变化后在短时间内出现新的输出
电路中没有循环反馈和时钟
? 时序逻辑电路
输出是输入与各种时间关系(如电位、节拍、脉冲)组合的
函数
输入变化后新的输出出现在下一个时钟周期
有循环反馈
1,1,3 数字逻辑电路的类型和研究方法
2.数字逻辑电路的研究方法(分析和设计)
? 系统级( System Level),对一连串输入数据进行处理
? 寄存器级( Register Level):通过寄存器实现运算
? 门级( Gate Level):选择逻辑门,对信号进行组合
? 开关级和物理级( Switch and Physical Level):用器件的通、
断实现逻辑功能
? 设计,根据提出的逻辑功能,在给定条件下构造出实现预定功
能的逻辑电路称为逻辑设计。
? 分析,对于一个现成的数字逻辑电路,研究它的工作性能和逻
辑功能。
1,2 数字及其转换
1,2,1 进制计数制
? 十进制
? 数字集 0,1,2,3,4,5,6,7,8,9
? 基本运算:加 +、减 -、乘 ×,除 ?
? 书写方法,N = 312.98
? 多项式表示,N = 3× 102 + 1× 101 + 2× 100 + 9 × 10-1 + 8× 10-2
? 一般的表示方法:
N = an-1an-2… a1a0.a-1a-2… a-m
= an-1× 10n-1+…+ a0× 100 +a-1 × 10-1+…+ a-m× 10-m
? r 进制
N =( an-1an-2… a1a0.a-1a-2… a-m) r
1,2,1 进制计数制
其中:
,—— 基点(小数点)
r —— 基
n —— 整数位数
m —— 小数位数
ai —— 整数部分第 i 位,n-1 ? i ? 0
a-i —— 小数部分第 i 位,-1 ? i ? -m
an-1 —— 最高位
am —— 最低位
? 多项式记数法
N = an-1× r n-1+… +a0× r 0 +a-1 × r -1+… +a-m× r –m
缩写方式:
1,2,1 进制计数制
1.二进制 Binary,r = 2,(0,1),二进制数,(1010110000110100)2
加法规则,0 + 0 = 0,0 + 1 = 1,1 + 0 = 1,1 + 1 = 0(进位为 1)
减法规则,0 – 0 = 0,0 –1 = 1(借位为 1),1 – 0 = 1,1 – 1 = 0
乘法规则,0× 0 = 0× 1 = 1× 0 = 0,1× 1 = 1
除法规则,0÷ 1 = 0,1÷ 1 = 1
11001 11001 11001 101
+ 101 - 101 × 101 101 ) 11001
11110 10100 11001 -101
00000 101
11001 -101
1111101 0
二进制除了运算简单之外,还具有容易物理实现的特点。可用晶体
管的通与断、磁盘的正向剩磁和反向剩磁以及光盘的平与凹表示。
1,2,1 进制计数制
2.八进制 Octal,r = 8 = 23, (0,1,2,3,4,5,6,7) 。对二进制整数从
右到左每三位用一位八进制表示,对二进制小数从左到右每三位用一位
八进制表示。例,(100 001 111.000 001)2 = (417.01 )8
437 437
+ 165 - 165
624 252
3.十六进制 Hexadecimal,r = 16 = 24, (0 ~ 9,A ~ F)。对二进制
整数从右到左每四位用一位十六进制表示,对二进制小数从左到右每四
位用一位十六进制表示。例,(0100 0011.1100 0001)2 = (43.C1)16
7A8 7A8
+ 36C - 36C
B14 43C
4.十进制 Decimal,r = 10,(0,1,2,3,4,5,6,7,8,9)
1,2,2 数制的转换
对于一个位数为 n 的 r 进制数 x = x0 x1 … xn-2 xn-1, 它所代表的十
进制数值为 x = x0 rn-1 + x1 rn-2 + … + xn-2 r1 + xn-1 r0。
十进制数 123 = 1× 102 + 2× 101 + 3× 100 = 100 + 20 + 3 = 12310
二进制数 11012 = 1× 23 + 1× 22 + 0× 21+1× 20 = 8 + 4 + 0 + 1 = 1310
当二进制数的位数较多时,书写和阅读不便,因此引入 8 进制和 16
进制。
例 1,100110102 = 10 011 010 = 2328
= 1001 1010 = 9A16
十进制整数转化为二进制整数采用除 2
取余的方法。最先取得的余数为二进制的
最低位,最后取得的余数为二进制的最高
位,直至商为 0。
例 2,1810 = 100102,
2 18
2 9 0 低位
2 4 1
2 2 0
2 1 0
0 1 高位
1,2,2 数制的转换
十进制小数转化为二进制小数采用乘 2 取整方法,
最先取得的整数为二进制小数最高位,最后取得的整数
为二进制小数最低位,直至乘积为 0 或位数满足要求。
例 3,0.8110 = 0.110012 (小数点后保留 5 位数)
二进制转化为十进制采用按权相加的办法 。
例 4,11010.10112 = 1× 24 + 1× 23 + 0× 22 + 1× 21 + 0× 20
+ 1× 2-1 + 0× 2-2 + 1× 2-3 + 1× 2-4 = 26.687510
十进制转化为 8 进制或 16 进制可采用类似方法, 但通常是先转化为
二进制, 再转化为 8 进制或 16 进制 。 8 进制或 16 进制转化为十进制同
样采用加权的方法 。
例 5,72.348 = 7× 81 + 2× 80 + 3× 8-1 + 4× 8-2 = 58.437510
4A.C7 = 4× 161 + 10× 160 + 12× 16-1 + 7× 16-2 = 74.777310
0,81
× 2
高位 1,62
× 2
1,24
× 2
0,48
× 2
0,96
× 2
低位 1,92
1,3 二进制数的机器码表示
二进制数据有正负之分,书写方法带正、负号(可省略正号),称
之为 真值 。 在机器中,为方便编码,将符号与数值一起编码,,0” 表示
正,,1” 表示负,这种表示法称之为 机器码 。
1,3,1 原码表示法
符号位表示该数符号, 0为正 1为负, 数值部分保留真值的特征 。
小数的原码形式为,x = x0.x1x2 … xn,原码表示的定义是:
[ + 0 ]原 = 0.00… 0,[- 0 ]原 = 1.00… 0
例 1,x = 0.1010,[ x ]原 = 0.1010
y = - 0.1010,[y ]原 = 1 + | - 0.1010 | = 1.1010
[x]原 = x 0 ≤ x < 1
1 – x = 1 + | x | - 1 < x ≤ 0
1,3,1 原码表示法
整数的原码形式为,x = x0 x1x2 … xn-1,则原码表示的定义是:
例 2,x = 1010,[ x ]原 = 0 1010
y = - 1010,[ y ]原 = 24 + | - 1010 | = 1 1010
1,3,2 反码表示法
符号位表示该数的符号, 0 为正 1 为负 。 数值部分对真值求反, 0 求
反为 1,1 求反为 0,使用反向器可轻易实现 。
小数的反码形式为,x = x0.x1x2 … xn,则反码表示的定义是:
[ + 0 ]反 = 0.00… 0,[- 0 ]反 = 1.11… 1
[x]原 = x 0 ≤ x < 2
n
2n – x = 2n + | x | - 2n < x ≤ 0
[x]反 = x 0 ≤ x < 1( 2 – 2-n) - | x | - 1 < x ≤ 0
1,3,2 反码表示法
例 3,x = 0.1010,[x ]反 = 0.1010
y = - 0.1010,[y ]反 = 10 – 2-4 – 0.1010 = 1.0101
整数的反码形式为,x = x0 x1x2 … xn-1,则反码表示的定义是:
例 4,x = 1010,[ x ]反 = 0 1010
y = - 1010,[ y ]反 =( 24+1– 1) – 1010 = 11111-1010 = 1 0101
1,3,3 补码表示法
模与补码的概念:在钟表上, 14 = 2( mod 12), 钟表的模为 12。
若模为 10,则有,-2 = 8 ( mod 10), -2 与 8 互为补码 。
7 - 2 = 7 +( - 2) = 7 + 8 = 15 = 5 ( mod 10) 。
二进制小数以 2 为模可获得补码 。 [ x ]补 = 2 + x ( mod 2), 当 x >
0 时将模 2 舍去 。 当 x < 0 时, [ x ]补 = 2 + x = 2 - | x |。
[x]反 = x 0 ≤ x < 2
n
( 2n+1– 1) + x =( 2n+1– 1) - | x | - 2n < x ≤ 0
1,3,3 补码表示法
补码符号位表示该数的符号, 0为正 1 为负 。
小数的补码形式为,x = x0.x1x2 … xn,则补码表示的定义是:
例 5,x = 0.1010,[ x ]补 = 0.1010
y = - 0.1010,[ y ]补 = 10 - 0.1010 = 1.0110
整数的补码形式为,x = x0 x1x2 … xn-1,则补码表示的定义是:
例 6,x = 1010,[ x ]补 = 0 1010
y = - 1010,[ y ]补 = 24+1 - | - 1010 | = 1 0110
[ + 0 ]补 = [ - 0 ]补 = 0.00… 0,[ - 1 ]补 = 1.00… 0
[x]补 = x 0 ≤ x < 12 + x = 2 - | x | - 1 ≤ x ≤ 0
[x]补 = x 0 ≤ x < 2
n
2n+1 + x = 2n+1 - | x | - 2n ≤ x ≤ 0
1,3,3 补码表示法
负数求补需做减法, 很不方便, 因此负数求补通常通过反码实现 。
对照负小数和负整数补码与反码的定义,可得如下结论:
对于负小数,有,[ x ]补 = [ x ]反 + 2-n,+ 2-n 表示小数最后一位加 1。
对于负整数,[ x ]补 = [ x ]反 + 1,+ 1 表示整数最后一位加 1。
结论:对负数求补码,其方法是符号位置 1,其余各位取反,然后
在最末位加 1。
例 7,x = - 0.1010,[ x ]补 = 1.0101 + 0,0001 = 1.0110
y = - 1010, [ y ]补 = 1 0101 + 1 = 1 0110
另一种对负数求补的方法为,符号位恒为 1,以最后一个数字 1 为
分界线,该位 1 之前的数字全部取反,该位 1 及以后的所有 0 不变 。
1,3,3 补码表示法
例 8,x = - 0.1 0 1 0,y = - 1 0 0 0,
[ x ]补 = 1.0 1 1 0 [ y ]补 = 1 1 0 0 0
对小数 x,小数第三位为最后一个 1,之前的 10 取反为 01,从本位
开始不变。对整数 y,第一位 1 为最后一个 1,从本位开始不变。
例 9:设机器字长 8 位,符号位 1 位,尾数 7 位,问三种表示法所
能表示的最大小数、最小小数、最大整数、最小整数的数值和格式。
表示法 最大小数 最小小数 最大整数 最小整数
原码 数值 127 / 128 - 127 / 128 127 -127表示方式 0.1111111 1.1111111 0 1111111 1 1111111
反码 数值 127 / 128 - 127 / 128 127 - 127表示方式 0.1111111 1.0000000 0 1111111 1 0000000
补码 数值 127 / 128 - 1 127 -128表示方式 0.1111111 1.0000000 0 1111111 1 0000000
1,4 其他常用编码
1,4,1 ASCII 码
目前国际上普遍采用的字符系统是 ASCII 码 ( 美国国家信息交换标
准字符码 ), 它包 括 10 个十进制数码, 26 个英文字母和其他专用符号,
共 128 个元素 。 27 = 128,因此二进制编码需 7 位, 占据一个字节 。
ASCII 码规定 8 个二进制位的最高一位为 0,余下的 7 位可以给出
128个编码, 表示 128 个不同的字符 。
128 个编码中有 95 个编码为字符码,对应的编码为 32 ~ 126,可以
显示或打印。另外的 33 个字符为控制码,控制计算机某些外围设备的工
作特性和某些计算机软件的运行情况。对应的编码为 0 ~ 31,127,不能
显示或打印。
数字 0 ~ 9在 ASCII字符码中为 011 0000 ~ 011 1001,即 30 ~ 39H,
前 3 位固定为 011,后 4 位就是十进制数对应的 8421 码。
1,4,2 十进制数的二进制编码
1,8421 码
8421 码为加权码,4 位二进制从高到低的权分别为 23,22,21,20 。
编码中的 0 ~ 9 与用 4 位二进制表示的 0 ~ 9 完全一样。 4 位二进制数的
1010 ~ 1111 不允许在 8421 码中出现,
8421 码与十进制数的转换按位进行。
例 1,25810 = 0010 0101 10008421码, 0001 1000 01018421码 = 18510
2,余三码
由 8421 码加上 0011 形成余 3 码。它是一种对 9 的自补代码,运算
较方便,能正确产生进位信号。有进位时对和进行加 3 修正,无进位结
果减 3。
余 3 代码中不允许出现 0000,0001,0010,1101,1110,1111。
余 3 代码与十进制转换也按位进行,每位十进制数编码都余 3。
例 2,25810 = 0101 1000 1011余 3 码, 0100 1000 0101余 3 码 = 15210
1,4,2 十进制数的二进制编码
3,字符串形式
以 ASCII 码方式存放十进制数, 一个字节存放一个十进制数 。
前分隔字符串,将符号位放在最前面, 占据一个字节, 用字符, +,
和, -, 表示 。
例 3,+128 用 4个字节表示为 2B 31 32 38,其中 2B 为字符, +,
的 ASCII 码 。 - 128 用 4 个字节表示为 2D 31 32 38,其中 2D 为字符, -
” 的 ASCII 码 。
后嵌入字符串,将符号位嵌入最低位数字中, 规则是正号不变, 而
将负号变成 16进制的 40,与最低位相加, 这样可减少了一个字节, 但最
后一位数字的编码与其他数字不一致 。
例 4,+128 用 3 个字节表示为 31 32 38,- 128 用 3 个字节表示为
31 32 78,其中 78 为 8 的 ASCII 码 38 与负号 40 之和 。
1,4,2 十进制数的二进制编码
4,压缩十进制形式
在一个字节中存放两个十进制数字, 用二进制来表示十进制数, 称
为二进制数的十进制编码 ( 二 ——十进制码 ), 简称 BCD码 。
8421 码是最简单的 BCD码, 用 4位二进制的前十个数 0000~1001 表
示十进制数 0 ~ 9,后 6 个数放弃, 实际上就是对二进制数按权求和 。
压缩形式的符号位放在最低位之后, 利用剩余的 6 个代码中的 1100
表示正号, 1101 表示负号 。 压缩方式要求数字位数为奇数, 加上符号位
后为偶数 。 当数字位数为偶数时, 在数字位之前补一个数字 0。
例 5,128 用 2 个字节表示, 0001 0010,1000 1100,最后 4位 1100
表示符号为正 。
例 6,- 1285 用 3 个字节表示, 0000 0001,0010 1000,0101 1101,
数字位数为偶数, 在前面补 0,最后 4 位 1101表示符号为负 。