绪 论
1.模拟量:连续变化的物理量
2.数字量:模拟 → 数字量 (A/D)
3.数字系统:使用数字量来传递、加工、处理信息的实际工程系统
4.数字系统的任务,
1) 将现实世界的信息转换成数字网络可以理解的二进制语言
2) 仅用 0,1完成所要求的计算和操作
3) 将结果以我们可以理解的方式返回现实世界
5.数字系统设计概况
1 ) 层次,从小到大,原语单元、较复杂单元、复杂单元、
更复杂单元
2)逻辑网络:以二进制为基础描述逻辑功能的网络
3)电子线路:物理构成
4)形式描述:用硬件描述语言( HDL)描述数字系统的行为
6.为什么采用数字系统
1)安全可靠性高
2)现代电子技术的发展为其提供了可能
7.数字系统的特点
1)二值逻辑(,0”低电平、,1”高电平)
2)基本门电路及其扩展逻辑电路(组成)
3)信号间符合算术运算或逻辑运算功能
4)其主要方法为逻辑分析与逻辑设计(工具为布尔代数、卡诺图和状态化简)
第一章 数制与码制学习要求:
掌握二、十、八、十六进位计数制及相互换;
掌握二进制数的原码、反码和补码表示及其加减运算;
了解定点数与浮点数的基本概念;掌握常用的几种编码。
1.1 进位计数制
1.1.1 十进制数的表示
1、进位计数制数制,用一组统一的符号和规则表示数的方法
2、记数法
位置计数法 例,123.45 读作 一百二十三点四五
按权展形式 例,123.45=1?102+2?101+3?100+4?10-1+5?10-2
3、基与基数用来表示数的数码的集合称为基( 0—9),
集合的大小称为基数 (十进制 10)。
4、权在十进制中,10的整幂次方称为 10进制数的权。
1.1.2 二进制数的表示对于任意一个二进制数 N,用位置记数法可表示为,
(N)2=(an-1 an-2 … a1 a0,a-1 a-2… a-m)2
用权展开式表示为
(N)2 = an-1?2n-1+an-2?2n-2 +…+ a1?21+a0?20+a-1
2-1+a-2?2-2+…+ a-m?2-m
i
i
n
mi
a 2
1


上面两式中,ai=0或 1,n为整数部分的位数,
m为小数部分的位数,
1.1.3 任意进制数的表示
1.1.4 二进制数的特点
只有两个数码,很容易用物理器件来实现。
运算规则简单。
可使用逻辑代数这一数学工具。
(N)r = an-1?rn-1+an-2?rn-2 +…+ a1?r1+a0?r0+a-1?
r-1+a-2?r-2+…+ a-m?r-m
i
i
n
mi
ra

1
(N) r=(an-1 an-2 … a1 a0,a-1 a-2… a-m)r
节省设备
1)设 n是数的位数
R是基数
Rn-----最大信息量
nR-----Rn个数码所需设备量例,n=3,R=10,(R)10n=103=1000
nR=3× 10=30
而 Rn≥1000 R=2 2n≥1000 n=10 Rn=1024
nR=10× 2=20
同样为 1000的信息量,二进制比十进制节省设备。
2)唯一性证明
N=Rn( N为最大信息量) LnN=nLnR 令 C=LnN C=nLnR
两边同乘 R,RC=nRLnR
L n R
RCnR? 0)(
L nR
RC
R=e=2.718
lnR-1=0
1.2 数制转换
1.2.1 二进制数和十进制数的转换
1、二进制数?十进制数
按权展开式在 十进制数域中计算例如:
012342 2021202121)101.11 010(
321 212021
125.05.02816
10)6 2 6.26(?
2、十进制数?二进制数
整数部分:除 2取余法例,将 (58)10转换成二进制形式
212110 ) ()58( onn aaaa
0112211 22 22 onnn-n aaaa?
onnn-n aaaa ) 22(2 13221?
2 22)29( 1
322110 onnn-n aaaa
得 ao=0
2 22)2
114( 1
2423110
aaaa n
nn-n
得 a1=1 …
则 (58)10 = (111010)2
短除法:先求出的余数为低位。
小数部分:乘 2取整法例,将 (0.625)10转换为二制形式
)22(212)6 2 5.0( 112110 mmaaa?
)22()25.1( 112110 mmaaa?
得 a-1=1
)22()00.1( 314310 mmaaa?
得 a-3=1
210 )101.0()625.0(?则注意:不能进行精确转换的情况
)22()5.0( 213210 mmaaa?
得 a-2=0
短乘法:先求出的整数为高位
1.2.2 八进制数、十六进制数与二进制数的转换例,八进制,2 5 7? 0 5 5 4
二进制,010 101 111? 000 101 101 100
十六进制,A F? 1 6 C
因此,(257.0554)8=(10101111.0001011011)2
=(AF.16C)16
1,真 值,直接用 "+"和 "–"表示符号的二进制数,不能在机器使用,
2,机器数,将符号数值化了的二进制数,可在机器中使用。
3,一般将符号位放在数的最高位。
例,+1011? 0 1 0 1 1
1 1 0 1 1-1011?
1.3.1 真值与机器数
1.3 带符号数的代码表示
1.3.2 原码又称 "符号 +数值表示 ",对于正数,符号位为 0,
对于负数、符号位为 1,其余各位表示数值部分。
例,N1 = +10011 N2 = – 01010
[ N1]原 = 010011 [N2]原 = 101010
原码表示的特点,(1)真值 0有两种原码表示形式,即 [ +0]反 = 00…0 [– 0]反 = 1 0…0
(2)表示范围,-127—+127( 8位整数)
原码公式:


011
10
][
NN
NN
N 原整数,(含一位符号位)
定点小数,(含一位符号位)




022
20
][
11
1
NN
NN
N
nn
n

1.3.3 反 码对于正数,其反码表示与原码表示相同,
对于负数,符号位为 1,其余各位是将原码数值按位求反。
例,N1 = +10011 N2 = – 01010
[ N1]反 = 010011 [N2]反 = 1 10101
( 1)真值 0也有两种反码表示形式,即
[ +0]反 = 00…0 [– 0]反 = 1 1…1
(2) 表示范围,-127— +127( 8位整数)
反码公式:


01)22
10
][
NN
NN
N
m(反整数,(含一位符号位)
定点小数,(含一位符号位)



02)12(
20
][
1
1
NN
NN
N
nn
n

1.3.4 补 码对于正数,其补码表示与原码表示相同,
对于负数,符号位为 1,其余各位是在反码数值的末位加 "1".
例,N1 = +10011 N2 = – 01010
[ N1]补 = 010011 [N2]补 = 1 10110
( 1)真值 0只有一种补码表示形式,即
[ – 0]补 = [– 0]反 +1= 1 1…1+1
= 1 0 0 … 0丢弃
(2)表示范围,-128— +127( 8位整数)
补码公式:


012
10
][
NN
NN
N 补整数,(含一位符号位)
定点小数,(含一位符号位)



022
20
][
1
1
NN
NN
N
nn
n
补补码的补充说明:
数学上,补码与其真值构成了以某一值
(计算机的字长)为模的“模数系统”或“同余”结构的代数系统。
模:计量器的容量。
例:计算机的字长为 L,模数为 2L。
丢弃
1 0 0 1 8
+ 1 0 0 0 9
1 0 0 0 1 17
在模 16的系统中,17=1 ( mod16)。
同余:在某一模数系统中,模数为 n,如果 a,b的余数相同,则称 a,b模 n同余。
补码的应用:
例:钟表为模 12的系统。
12
39
6
●?

顺时针,+;逆时针,-由 12点拨到 3点:
1) 12+3=15=15-12=3( mod12)
2) 12-9=3
12+( 12-9) =3( mod12)
在模 n的系统中,N与 n-N是一对互补的数,
利用其特点可把减法变成加法运算。
[N]补 =2n+N -2n-1 N < 0? 取反加 1
则,12-9=12+3=3
同号数相加或异号数相减,运算规则为绝对值相加,取被加 (减 )数的符号。
(+A)-(+B)=(+A)+(-B)
(-A)-(-B)=(-A)+(+B)
2、设 A,B表示绝对值,有下列两类八种情况。
(+A)+(+B)=(+A)-(-B)
(-A)+(-B)=(-A)-(+B)
同号数相减或异号数相加。运算规则为绝对值相减,取绝大值较大者的符号。
1、符号位不参与运算,单独处理。
一、原码运算
1.3.5 机器数的加、减运算解,[ N1 ]原 = 10011,[ N2 ]原 = 01011
求 [ N1 +N2]原,绝对值相减,有
1 0 1 1
- ) 0 0 1 1
1 0 0 0
结果取 N2的符号,即,[ N1 +N2]原 = 01000
真值为,N1 +N2= 1000
例,N1 =- 0011,N2 = 1011求 [ N1 +N2]原 和
[ N1 - N2]原 。
求 [ N1 - N2]原,绝对值相加,有
0 0 1 1
+ ) 1 0 1 1
1 1 1 0
结果取 N1的符号,即:
[ N1 - N2]原 = 11110
真值为,N1 - N2=- 1110
二、补码运算可以证明有如下补码加、减运算规则:
[ N1 +N2]补 = [ N1]补 + [ N2]补
[ N1 - N2]补 = [ N1]补 + [- N2]补此规则说明补码的符号位参与加减运算。
[[N]补 ]补 =[N]原例,N1 =- 0011,N2 = 1011求 [ N1 +N2]补和 [ N1 - N2]补 。
解,[ N1 ]补 = 11101,[ N2 ]补 = 01011,
[- N2 ]补 = 10101
[ N1 +N2]补 =11101+01011= 01000
1 1 1 0 1
+ ) 0 1 0 1 1
1 0 1 0 0 0丢弃真值为,N1 +N2=1000
[ N1 - N2]补 =11101+10101
1 1 1 0 1
+ ) 1 0 1 0 1
1 1 0 0 1 0丢弃真值为,N1 - N2=- 1110
补码加法减法运算:符号位有进位则丢弃。
三、反码运算
[ N1 +N2]反 = [ N1]反 + [ N2]反
[ N1 - N2]反 = [ N1]反 + [- N2]反当符号位有进位时,应在结果的最低位再加,1”(循环进位),
[[N]反 ]反 =[N]原例,N1 =- 0011,N2 = 1011求 [ N1 +N2]反和 [ N1 - N2]反 。
解,[ N1 ]反 = 11100,[ N2 ]反 = 01011,
[- N2 ]反 = 10100
[ N1 +N2]反 =11100+01011= 01000
1 1 1 0 0
+ ) 0 1 0 1 1
1 0 0 1 1 1
+ ) 1
0 1 0 0 0
真值为,N1 +N2=1000
[ N1 - N2]反 = 11100+10100
1 1 1 0 0
+ ) 1 0 1 0 0
1 1 0 0 0 0
+ ) 1
1 0 0 0 1
真值为,N1 - N2=- 1110
1.3.6 十进制的补数为方便十进制减法运算而引进十进制的补数。
一、对 10的补数对于十进制正数 N,其对 10的补数表现形式为:
符号位为 0,数值部分为 N本身。
例,N=5493 [N]10补 =05493
例,N=-3250 [N]10补 =105-3250=96750
例,N=-0.3267 [N]10补 =10-0.3267=9.6733
对于十进制负数 N,其对 10的补数表现形式为:
[N]10补 =10n+N -10n-1 <n<0
( n为 N的整数部分的位数,含一位符号位。 )
对 10的补数减法运算举例:
例,N1=72532,N2=33256,求,N=N1-N2
[N1-N2]10补 =[72532-33256]10补
=[72532]10补 +[-33256]10补
=072532+966744
0 7 2 5 3 2
+) 9 6 6 7 4 4
1 0 3 9 2 7 6丢掉
[N1-N2]10补 = 039276
N1-N2= 39276
二、对 9的补数对于十进制正数 N,其对 9的补数表现形式为:
符号位为 0,数制部分为 N本身,与对 10的补数相同。
例,N=8954 [N]9补 =08954
对于十进制负数 N,其对 9的补数表现形式为:
[N]9补 =10n-10-m+N -10n-1<n<0
( n为 N的整数部分的位数,含一位符号位,
M为 N的小数部分的位数。 )
例,N = -3250 [N]9补 =105-1-3250=96749
例,N = -25,639 [N]9补 =103-10-3-25.639=974.360
对 9的补数减法运算举例:
例,N1=5489,N2=3250,求,N=N1-N2
[N1-N2]9补 =[5489-3250]9补
=[5489]9补 +[-3250]9补
=05489+96749
0 5 4 8 9
+) 9 6 7 4 9
1 0 2 2 3 8
[N1-N2]9补 = 02239 N1-N2= 2239
+) 1
0 2 2 3 9
1.4 数的定点表示与浮点表示
1.4.1 数的定点表示即小数点的位置固定不变,一般可固定在任何位置,但通常固定在数值部份的最高位之前或最低之后,前者表示纯小数,后者表示纯整数。但机器中并没有小数点,仅仅是一种默认。
1 1 1 0 1 1 0 1
符号
小数点
n位数值
1 1 1 0 1 1 0 1
符号
小数点
n位数值
12||1 21||2 nnn NN
如果运算结果小于 2-n(或 1),称出现了 "下溢 ",
一般作为 0处理,结果大于 1- 2-n(或 2n-1),称出现了 "上溢 ",一般会停机或进入出错处理程序。
1.4.2 数的浮点表示定点数的数域较小。若既要能表示很小的数,又要能表示很大的数,则采用浮点表示法比较合适。
一般形式为,N=2J?S
其中 2J称为 N的指数部分,表示小数点的位置,
S为 N的尾数部分,表示数的符号和有效数字。
规格化数:尾数最高数值位非 0,.1||21 S即规格化数可以提高运算精度。例如:
0 1 0 1 1.021 0 1 1.021 0 1 1 1 0 11 0 0
如果尾数的数值部分只有 4位,则后一种表示将产生误差。
01010010
阶符阶码 尾符 尾数例:
机器零:浮点数的尾数为零或阶码为最小数
上溢:数的阶码大于机器所能表示的最大阶码
下溢:数的阶码小于机器所能表示的最小阶码
N=210 0.1010?
浮点数的运算:
11 12 SN J 22
22 SN J
)(2 2121 1 SSNN J
1)加减法:
若 J1 =J2
若 J1 < >J2 则需要先对阶再按上式进行计算例,N1=211*0.1011 N2=201*0.1100
对阶:使 J1=J2=11 则N 2=211*0.0011
)0 0 1 1.01 0 1 1.0(2 1121 NN
2)乘除法:
)( 21)(21 21 SSRNN JJ
)( 21)(21 21 SSRNN JJ
1.5 数码和字符的代码表示
1.5.1 十进制数的二进制编码简称为二 ——十进制码或 BCD码,即用若干位二进制数来表示一位十进制数。
一,8421 BCD码简称 8421码。按 4位二进制数的自然顺序,
取前十个数依次表示十进制的 0~ 9,后 6个数不允许出现,若出现则认为是非法的或错误的。
8421码是一种有权码,每位有固定的权,
从高到低依次为 8,4,2,1,如,
8421码 0111=0?8+1?4+1?2+1?1=7
8421码的特点:
1)与四位二进制数的表示完全一样
2) 1010—1111为冗余码
3) 8421码与十进制的转换关系为直接转换关系例,( 0001 0011.0110 0100)8421BCD=(13.64)10
4) 运算时按逢 10进 1的原则,并且要进行调整调整原则,有进位或出现冗余码时,
加法 +6调整 ;
减法 -6调整,
8421码运算举例,
例,8+9=17
1 0 0 0
+) 1 0 0 1
1 0 0 0 1进位
+) 0 1 1 0
0 1 1 1
例,7+6=13
0 1 1 1
+) 0 1 1 0
1 1 0 1
+) 0 1 1 0
1 0 0 1 1丢弃二、余 3码由 8421码加 3形成。
4)如果两个余 3码相加没有进位,
则和数要减 3,否则和数要加 3。
1)是一种无权码。
2)有六个冗余码。
( 0000,0001,0010,1101,1110,1111)
3)对 9的自补码。
例,(4)余 3码 =0111; (5)余 3码 =1000
(0111)9补 =1000 即 0111按位取反。
0 1 0 0
+ ) 0 1 1 0
1 0 1 0
- ) 0 0 1 1
0 1 1 1
例如,0100+0110=0111
1 0 0 0
+ ) 1 0 0 1
1 0 0 0 1
+) 0 0 1 1
1 0 1 0 0
1000+1001= 1 0 1 0 0
三,2421 BCD码简称 2421码。按 4位二进制数的自然顺序,取前 8个数依次表示十进制的 0~ 7,8和
9分别为 1110和 1111。其余 6个数不允许出现,
若出现则认为是非法的或错误的。这只是
2421码的一种编码方案。
2421码是一种有权码,每位有固定的权,
从高到低依次为 2,4,2,1,如,
2421码 0111=0?2+1?4+1?2+1?1=7
2421码 1110=1?2+1?4+1?2+0?1=8
2421码的编码方案:
代码 方案 1 方案 2 方案 3/4
0 0000 0000 0000
1 0001 0001 0001
2 0010 1000 0010/1000
3 0011 1001 0011/1001
4 0100 1010 0100/1010
5 0101 1011 1011/0101
6 0110 1100 1100/0110
7 0111 1101 1101/0111
8 1110 1110 1110
9 1111 1111 1111
对九自补
1.5.2 可靠性编码能减少错误,发现错误,甚至纠正错误的编码称为可靠性编码。
一、格雷码在一组数的编码中,如果任意相邻的代码只有一位二进制数不同,即为格雷码。
典型二进制格雷码编码规则:
11 nn BG
1 iii BBG
1 1 0 1
1 0 1 1
例,13的格雷码:
十进制 二进制 GREY1 步进码 GREY2
0 0000 0000 00000 0000
1 0001 0001 00001 0001
2 0010 0011 00011 0011
3 0011 0010 00111 0010
4 0100 0110 01111 0110
5 0101 0111 11111 1110
6 0110 0101 11110 1010
7 0111 0100 11100 1011
8 1000 1100 11000 1001
9 1001 1101 10000 1000
10 1010 1111
11 1011 1110
12 1100 1010
13 1101 1011
14 1110 1001
15 1111 1000
反射循环格雷码应用:
循环计数
典型二进制格雷码转换成二进制数的方法:
11 nn GB
iii GBB 1
0 1 0 0
0 1 1 1
例,7的典型格雷码为 0100

步进码的形成:
例:,7”的步进码为 11100 ;,8”的步进码为 11000
1 1 1 0 0 0
0
左移一位 取反二、奇偶校验码由信息位和校验位 (冗余部分 )两部分组成。校验位的取值可使整个校验码中的
1的个数按事先的规完成为奇数或偶数。
奇偶校验码可发现奇数位错误,但不能
1 0011010?1 0011011
出现的错误,但并不知道是哪一位出了错,虽然
1 0 0 1 1 0 1 0? 1 0 0 1 1 0 0 1出现了错误,
但 我们无法知道。
发现偶数位错误。如三、海明码可以检验一位错误并且可以定位的可靠性编码。
结构:信息位 (4位 )+校验位 (3位 ) (以 BCD码为例 )
组织,I4 I3 I2 P3 I1 P2 P1
校验规则:
2343 IIIP
1241 IIIP
1342 IIIP
例:求 0100的海明码
0 1 0 1 0 1 0
P3 P2 P1
海明码校验和:
21341 PIIIS
32342 PIIIS
11240 PIIIS
Si=0 无错; Si=1 出错。( i=0,1,2)
海明码错误定位,
S2S1S0为 000说明无错 ;
S2S1S0为 111至 001表明一位出错位置。
S2=1; S1=0; S0=1 说明第五位出错。
错例:接收 0 0 0 1 1 1 0
I4 I3 I2 P3 I1 P2 P1
海明码信息位与校验位的关系:
12 nkk
其中 k为校验位位数; n为信息位位数。
海明码位数 +1
2552478
1271207
63576
31265
15114
743
312
101
海明码位数nmaxk
1.5.3 字符代码字符 A,B,…,Z; a,b,…,z ; +,-,0,1,2,…,
9等用 ASCII(美国标准信息交换码 )表示 (7位 )
注,数字 0,1,…,9 与字符 0,1,…,9 是不同的,