第1章数制与编码第1章数制与编码1.1数字逻辑电路概述1.2数制1.3编码第1章数制与编码1.1数字逻辑电路概述自然界的各种物理量可分为模拟量和数字量两大类。模拟量在时间上是连续取值,幅值上也是连续变化的,表示模拟量的信号称为模拟信号,处理模拟信号的电子电路称为模拟电路。数字量是一系列离散的时刻取值,数值的大小和每次的增减都是量化单位的整数倍,即它们是一系列时间离散、数值也离散的信号。表示数字量的信号称为数字信号。处理数字信号的电子电路称为数字电路。第1章数制与编码数字电路的一般框图如图1.1.1所示,它有n个输入1X,2X,nX和m个输出1F,2FmF,此外还有一个定时信号,即时钟脉冲信号(Clock)。对于每一个输入iX和输出jF都是时间和数值上离散的二值信号,用数字0和1来表示。在数字电路和系统中,可以用0和1组成的二进制数码表示数量的大小,也可以用0和1表示两种不同的逻辑状态。当用0和1表示客观事物两种对立的状态时,它已不表示数值了,而是表示逻辑0和逻辑1,这两种对立的逻辑状态称为二值数字逻辑或简称为数字逻辑。数字电路的输出与输入之间满足一定的逻辑关系,因而数字电路也称为逻辑电路。第1章数制与编码图1.1.1数字电路系统框图第1章数制与编码数字电路中的电子器件都工作在开关状态,电路的输出只有高、低两个电平,因而很容易实现二值数字逻辑。在分析实际电路时,逻辑高电平和逻辑低电平都对应一定的电压范围,不同系列的数字集成电路,其输入、输出为高电平或低电平所对应的电压范围是不同的(参看第3章)。一般用逻辑高电平(或接电源电压)表示逻辑1和二进制数的1,用逻辑低电平(或接地)表示逻辑0和二进制数的0。在数字电路中,当用高电平表示逻辑1,低电平表示逻辑0时称为正逻辑;当用低电平表示逻辑1、高电平表示逻辑0时称为负逻辑,通常情况下数字电路使用正逻辑。第1章数制与编码数字电路的输入、输出逻辑电平随时间变化的波形称为数字波形。数字波形有两种类型,一种是电位型(或称非归零型),另一种是脉冲型(或称归零型)。在波形图中,一定的时间间隔T称为1位(1bit)或一拍。电位型的数字波形在一拍时间内用高电平表示1,低电平表示0,脉冲型数字波形则在一拍时间内以脉冲有无来表示1和0。图1.1.2是表示01001101100序列信号两种数字波形,其中图(a)为电位型表示的波形,图(b)是脉冲型表示的波形。第1章数制与编码图1.1.2序列信号的两种数字波形(a)电位型的数字波形;(b)脉冲型的数字波形第1章数制与编码数字电路和系统的输入、输出逻辑关系(功能或行为)通常可以用文字、真值表、逻辑函数表达式、逻辑电路图、时序图、状态图、状态表和硬件描述语言等多种形式进行描述。在众多描述中,将文字描述的逻辑命题采用真值表、状态表(或图)描述的过程称为逻辑抽象,它是逻辑设计中关键的一步。有关数字系统的各种描述形式我们将在后续章节介绍。第1章数制与编码数字电路系统只能处理用二进制数表示的数字信号,而人们习惯用的十进制数不能直接被数字电路系统接收。因此,在进行人与数字电路系统交换信息时,需要把十进制数转换成二进制数,当数字系统运行结束时,为了便于人们阅读,又需要将二进制数再转换成十进制数。所以为了便于信息交换和传输,我们需要研究各种数制之间的转换及不同的编码方式。第1章数制与编码1.2数制1.1.1进位计数制按进位的原则进行计数,称为进位计数制。每一种进位计数制都有一组特定的数码,例如十进制数有10个数码,二进制数只有两个数码,而十六进制数有16个数码。每种进位计数制中允许使用的数码总数称为基数或底数。在任何一种进位计数制中,任何一个数都由整数和小数两部分组成,并且具有两种书写形式:位置记数法和多项式表示法。第1章数制与编码1.十进制数(Decimal)①采用10个不同的数码0、1、2、…、9和一个小数点(.)。②进位规则是“逢十进一”。若干个数码并列在一起可以表示一个十进制数。例如在435.86这个数中,小数点左边第一位的5代表个位,它的数值为5;小数点左边第二位的3代表十位,它的数值为3×101;左边第三位的4代表百位,它的数值为4×102;小数点右边第一位的值为8×10-1;小数点右边第二位的值为6×10-2。可见,数码处于不同的位置,代表的数值是不同的。这里102、101、100、10-1、10-2称为权或位权,即十进制数中各位的权是基数10的幂,各位数码的值等于该数码与权的乘积。因此有第1章数制与编码2101210610810510410486.435上式左边称为位置记数法或并列表示法,右边称为多项式表示法或按权展开法。一般,对于任何一个十进制数N,都可以用位置记数法和多项式表示法写为1221100112211210121101010101010101010)(nmiiimmnnnnmnnaaaaaaaaaaaaaaaN第1章数制与编码式中,n代表整数位数,m代表小数位数,ai(-m≤i≤n-1)表示第i位数码,它可以是0、1、2、3、…、9中的任意一个,10i为第i位数码的权值。上述十进制数的表示方法也可以推广到任意进制数。对于一个基数为R(R≥2)的R进制计数制,数N可以写为1221100112211210121)(nmiiimmnnnnmnnRRaRaRaRaRaRaRaRaaaaaaaaN式中,n代表整数位数,m代表小数位数,ai为第i位数码,它可以是0、1、…、(R-1)个不同数码中的任何一个,Ri为第i位数码的权值。(1-2)第1章数制与编码2.二进制数二进制数的进位规则是“逢二进一”,其进位基数R=2,每位数码的取值只能是0或1,每位的权是2的幂。表1.2.1列出了二进制位数、权和十进制数的对应关系。表1.2.1二进制位数、权和十进制数的对应关系二进制位数1312111098765432112211210292827262524232221202权(十进制表示)4096204810245122561286432168421二进制位数-1-2-3-4-5-6122223242526权(十进制表示)0.50.250.1250.06250.031250.015625第1章数制与编码任何一个二进制数可表示为1221100112211210121222222222)(nmiiimmnnnnmnnaaaaaaaaaaaaaaaN例如:1032101232)375.11(21212021212021)011.1011(第1章数制与编码二进制数却有以下优点:①因为它只有0、1两个数码,在数字电路中利用一个具有两个稳定状态且能相互转换的开关器件就可以表示一位二进制数,因此采用二进制数的电路容易实现,且工作稳定可靠。②算术运算规则简单。二进制数的算术运算和十进制数的算术运算规则基本相同,惟一区别在于二进制数是“逢二进一”及“借一当二”,而不是“逢十进一”及“借一当十”。第1章数制与编码例如:第1章数制与编码3.八进制数(Octal)八进制数的进位规则是“逢八进一”,其基数R=8,采用的数码是0、1、2、3、4、5、6、7,每位的权是8的幂。任何一个八进制数也可以根据式(1-2)表示为188)(nmiiiaN例如:1010128)5.254(5.068764384868783)4.376(第1章数制与编码4.十六进制数(Hexadecimal)十六进制数的特点是:①采用的16个数码为0、1、2、…、9、A、B、C、D、E、F。符号A~F分别代表十进制数的10~15。②进位规则是“逢十六进一”,基数R=16,每位的权是16的幂。任何一个十六进制数,也可以根据式(1-2)表示为11616)(nmiiiaN102101216)0664.939(16116116111610163)113(AB例如:第1章数制与编码1.2.2进位计数制之间的转换1.2.2进位计数制之间的转换1.二进制数与十进制数之间的转换1)二进制数转换成十进制数——按权展开法二进制数转换成十进制数时,只要二进制数按式(1-3)展开,然后将各项数值按十进制数相加,便可得到等值的十进制数。例如:10211242)75.22(2121212121)11.10110(同理,若将任意进制数转换为十进制数,只需将数(N)R写成按权展开的多项式表示式,并按十进制规则进行运算,便可求得相应的十进制数(N)10。第1章数制与编码2)(1)整数转换——除2取余法。若将十进制整数(N)10转换为二进制整数(N)2,则可以写成01011232110011221110222222222)(aQaaaaaaaaaNnnnnnnnn)(如果将上式两边同除以2,所得的商为)222(11232211aaaaQnnnn余数就是a0。第1章数制与编码同理,这个商又可以写成34212222nnnnQaaa显然,若将上式两边再同时除以2,则所得余数是a1。重复上述过程,直到商为0,就可得二进制数的数码a0、a1、…、an-1。余数a1。第1章数制与编码例如,将(57)10转换为二进制数:故第1章数制与编码(2)小数转换——乘2取整法。若将十进制小数(N)10转换为二进制小数(N)2,则可以写成mmaaaN222)(221110将上式两边同时乘以2,便得到111012112()(22)mmNaaaaF可见,2(N)10乘积的整数部分就是a-1,小数部分就是F1。若将2(N)10乘积的小数部分F1再乘以2,则有1221234222(222)mmFaaaaaF第1章数制与编码所得乘积整数部分就是a-2,小数部分为F2。显然,重复上述过程,便可求出二进制小数的各位数符a-1,a-2,…,a-m。例如,将(0.724)10转换成二进制小数。第1章数制与编码应指出,小数部分乘2取整的过程不一定能使最后乘积为0,因此转换值存在一定的误差。通常在二进制小数将一个带有整数和小数的十进制数转换成二进制数时,必须将整数部分和小数部分分别按除2取余法和乘2同理,若将十进制数转换成任意R进制(N)R,则整数部分转换采用除R取余法,小数部分采用乘R第1章数制与编码2.二进制数与八进制数、十六进制数之间的相互转换八进制数和十六进制数的基数分别为8=23,16=24,所以三位二进制数恰好相当一位八进制数,四位二进制数相当一位十六进制数,它们之间的相互转换是很方便的。,分别向左、向右,将二进制数按每三位一组分组(不足三位的补0),然后写出每一组等值的八进制数。例如,求(01101111010.1011)2的等值八进制数:第1章数制与编码例如,求(01101111010.1011)2的等值八进制数:二进制001101111010.101100八进制1572.54所以(01101111010.1011)2=(1572.54)8二进制数转换成十六进制数的方法和二进制数与八进制数的转换相似,从小数点开始分别向左、向右将二进制数按每四位一组分组(不足四位补0),然后写出每一组等值的十六进制数。第1章数制与编码例如,将(1101101011.101)转换为十六进制数:001101101011.101036B.A所以(1101101011.101)2=(36B.A)16八进