第1章 数制与编码
1.1 模拟信号与数字信号 1.1.1 模拟信号与数字信号的概念 模拟(analog)信号 信号的幅度量值随着时间的延续(变化)而发生连续变化。 用以传递、加工和处理模拟信号的电子电路被称为模拟电路。 数字(digital)信号 信号的幅度量值随着时间的延续(变化)而发生不连续的,具有离散特性变化 用于处理数字信号的电路,如传送、存储、变换、算术运算和逻辑运算等的电路称为数字电路。
1.1.2 数字电路与模拟电路的区别 表1-1 数字电路与模拟电路的主要区别 电路类型 数字电路 模拟电路 研究内容 输入信号与输出信号间的逻辑关系 如何不失真地进行信号的处理 信号的 特征 时间上离散,但在数值上是单位量的整数倍 在时间上和数值上是连续变化的电信号 分析方法 逻辑代数 图解法,等效电路,分析计算 数值 时间 1
1.1.3 数字电路的特点 (1) 稳定性好,抗干扰能力强。 (2) 容易设计,并便于构成大规模集成电路。 (3) 信息的处理能力强。 (4) 精度高。 (5) 精度容易保持。 (6) 便于存储。 (7) 数字电路设计的可编程性。 (8) 功耗小。
1.2 数字系统中的数制 1.2.1 十进制数表述方法 特点 1.在每个位置只能出现(十进制数)十个数码中的一个。 2.低位到相邻高位的进位规则是“逢十进一”,故称为十进制。 3.同一数码在不同的位置(数位)表示的数值是不同的。 (1-1)
1.2.2 二进制数表述方法 (1-2) 如将 (11010.101)2 写成权展开式为:
1.2.2 二进制数表述方法 二进制的加法规则是: 0 + 0 = 0 ,1 + 0 = 1 0 + 1 = 1 ,1 + 1 = 10 二进制的减法规则是: 0 – 0 = 0, 0 – 1 = 1(有借位) 1 – 0 = 1 ,1 – 1 = 0 二进制数除法: 11110 ÷ 101 = 110 同样可以用算式完成: 二进制的乘法规则是: 0 × 0 = 0 ,1 × 0 = 0 0 × 1 = 0 ,1 × 1 = 1
十六进制数采用0、1、2、3、4、5、6、7、8、9和A、 B、 C、 D、 E、 F十六个数码。 1.2.3 十六进制数表述方法 十六进制数采用0、1、2、3、4、5、6、7、8、9和A、 B、 C、 D、 E、 F十六个数码。 10 11 12 13 14 15 (1-3) (7F9)16 = 7×162 + F×161 + 9×160
八进制数的基数是8,它有 0、1、2、3、4、5、6、7共八个有效数码。 1.2.4 八进制数表述方法 八进制数的基数是8,它有 0、1、2、3、4、5、6、7共八个有效数码。 (1-4)
1.3 不同数制间的转换 1.3.1 十六进制、二进制数与十进制数间的转换 从小数点开始向左按四位分节,最高位和低位不足四位时,添0补足四位分节,然后用一个等值的十六进制数代换。 转换 二进制数 十六进制数 转换 二进制数 十六进制数 将每个十六进制数用4位二进制来书写,其最左侧或最右侧的可以省去。 转换 二进制数 十进制数 通常采用基数乘除法。 转换 二进制数 十进制数 将对应的二、十六进制数按各位权展开,并把各位值相加。
1.3.1 十六进制、二进制数与十进制数间的转换 【例1-1】将二进制数(110101.101)2转换为十进制数。 解:(110101.101)2 = 1×25 + l×24 + 0×23 + 1×22 + 0×21 + l×20 + 1×2-1 + 0×2-2 + 1×2-3 = 32 + 16 + 0 + 4 + 0 + 1 + 0.5 + 0 + 0.125 = (53.625) D 【例1-2】 将十六进制数(4E5.8) H转换为十进制数。 解:(4E5.8) H = 4×(16)2 + E×(16)1 + 5×(16)0 + 8×(16)-1 = 4×256 + 14×16 + 5×1 + 8×(1/16) = (1253.5) D
1.3.2 十进制数转换为二进制、十六进制数 【例1-3】 将(59.625)D转换为二进制数。 解: 小数部分 0.625 整数 × 2 1.250 ……… 1 高位 0.250 × 2 0.500 ……… 0(顺序) 1.000 ……… 1 低位 整数部分 2 | 59 余数 2 | 29 …… 1 低位 2 | 14 …… 1 2 | 7 …… 0 (反序) 2 | 3 …… 1 2 | 1 …… 0 0 …… 1 高位 即 (59.625)D=(101011.101)B
1.3.2 十进制数转换为二进制、十六进制数 解: 【例1-4】 将十进制数(427.34357)D转换成十六进制数。 小数部分 整数部分 0.34357 整数 × 16 5.50000 ……… 5 高位 0.50000 (顺序) 8.00000 ……… 8 低位 整数部分 16 | 427 余数 16 | 26 ………11 低位 16 | 1 ……… 10 (反序) 0 ……… 1 高位 即 (427.34357)D=(1AB.58)16
1.3.3 二进制数与十六进制数之间的相互转换 【例1-5】 将二进制数(10110101011.100101)B转换成十六进制数。 解: 因为 10110101011.100101 = 0101 1010 1011.1001 0100 ↓ ↓ ↓ ↓ ↓ 5 A B 9 4 所以(10110101011.100101)B =(5AB.94)H
1.3.3 二进制数与十六进制数之间的相互转换 【例1-6】 将十六进制数(75E.C6)H转换成二进制数。 解: 将每位十六进制数写成对应的四位二进制数 (75E.C6 )H =(0111 0101 1110. 1100 0110)B =(111 0101 1110. 1100 011)B
1.3.3 二进制数与十六进制数之间的相互转换 八进制转二进制规则是,将每位八进制数码分别用三位二进制数表示,并在这个0和1构成的序列去掉无用的前导0即得。 【例1-7】将八进制数(5163)O转换成二进制数。 解:将每位八进制数码分别用三位二进制数表示,转换过程如下 (5163)O = (101 001 110 011)2 = (101001110011)2
1.4 数字系统中数的表示方法与格式 1.4.1 十进制编码 1. 8421 BCD码 1.4 数字系统中数的表示方法与格式 1.4.1 十进制编码 1. 8421 BCD码 在这种编码方式中,每一位二进制代码都代表一个固定的数值,把每一位中的1所代表的十进制数加起来,得到的结果就是它所代表的十进制数码。由于代码中从左到右每一位中的1分别表示8、4、2、1(权值),即从左到右,它的各位权值分别是8、4、2、1。所以把这种代码叫做8421码。8421 BCD码是只取四位自然二进制代码的前10种组合。
1.4.1 十进制编码 2. 2421码 从左到右,它的各位权值分别是2、4、2、1。与每个代码等值的十进制数就是它表示的十进制数。在2421码中,0与9的代码、1与8的代码、2与7的代码、3与6的代码、4与5的代码均互为反码。 3. 余3码 余3码是一种特殊的BCD码,它是由8421 BCD码加3后形成的,所以叫做余3码。
表1-2 三种常用的十进制编码 不用的代码 (伪码) 十进制数 8421码(BCD码) 2421码 余3码 0000 0011 1 0001 表1-2 三种常用的十进制编码 十进制数 8421码(BCD码) 2421码 余3码 0000 0011 1 0001 0100 2 0010 0101 3 0110 4 0111 5 1011 1000 6 1100 1001 7 1101 1010 8 1110 9 1111 1111 1010 1110 1001 1101 1000 0010 0111 1100 0001 0110 1011 0000 0101 不用的代码 (伪码)
1.4.1 十进制编码 4. 格雷码 ● 二进制码到格雷码的转换 (1)格雷码的最高位(最左边)与二进制码的最高位相同。 4. 格雷码 ● 二进制码到格雷码的转换 (1)格雷码的最高位(最左边)与二进制码的最高位相同。 (2)从左到右,逐一将二进制码的两个相邻位相加,作为格雷码的下一位(舍去进位)。 (3)格雷码和二进制码的位数始终相同。 ● 格雷码到二进制码的转换 (1)二进制码的最高位(最左边)与格雷码的最高位相同。 (2)将产生的每个二进制码位加上下一相邻位置的格雷码位,作为二进制码的下一位(舍去进位)。
1.4.1 十进制编码 表1-3 四位格雷码 十进制数 二进制码 格雷码 0000 8 1000 1100 1 0001 9 1001 表1-3 四位格雷码 十进制数 二进制码 格雷码 0000 8 1000 1100 1 0001 9 1001 1101 2 0010 0011 10 1010 1111 3 11 1011 1110 4 0100 0110 12 5 0101 0111 13 6 14 7 15
1.4.1 十进制编码 【例1-8】 把二进制数1001转换成格雷码。 解: 二进制数到格雷码的转换
1.4.1 十进制编码 【例1-9】 把格雷码0111转换成二进制数。 解: 格雷码到二进制数的转换
解:将十进制数的每一位转换为其相应的4位BCD码。 那么十进制数972.65就等于: 8421 BCD码: 1001 0111 0010.0110 01018421BCD,即 972.6510 = 100101110010.011001018421BCD 十进制 9 7 2 . 6 5 十进制 9 7 2 . 6 5 BCD 1001 0111 0010 . 0110 0101
解:首先对十进制数进行8421BCD编码,然后再将各的位编码加3即可得到余3码。 【例1-11】 用余3码对十进制数 N = 567810进行编码。 解:首先对十进制数进行8421BCD编码,然后再将各的位编码加3即可得到余3码。 十进制 9 7 2 . 6 5 5 6 7 8 ↓ ↓ ↓ ↓ 0101 0110 0111 1000 1000 1001 1010 1011 所以有:N =567810 = 1000 1001 1010 1011余3
1.4.3 字母数字码 【例1-12】 一组信息的ASCII码如下,请问这些信息是什么? 1001000 1000101 1001100 1010000 解: 把每组7位码转换为等值的十六进制数,则有: 48 45 4C 50 以此十六进制数为依据,查表1-4可确定其所表示的符号为:H E L P
表1-4 美国信息交换标准码(ASCII码)表 位765 位4321 000 001 010 011 100 101 110 111 0000 NUL DLE SP @ P ` p 0001 SOH DC1 ! 1 A Q a q 0010 STX DC2 ” 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN & 6 F V f v 0111 BEL ETB ’ 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LF SUB * : J Z j z 1011 VT ESC + ; K [ k { 1100 FF FS , < L ] l | 1101 CR GS - = M \ m } 1110 SO RS . > N ^ n ~ 1111 SI US / ? O _ o DEL 1.4 数字系统中数的表示方法与格式 位765 位4321 1.4.3 字母数字码 十进制 9 7 2 . 6 5
1.4.4 码制 1. 原码表示法 十进制的+37和-37的原码可分别写成: 十进制数 + 37 - 37 1.4.4 码制 1. 原码表示法 十进制的+37和-37的原码可分别写成: 十进制数 + 37 - 37 二进制原码 0 100101 1 100101 ↑ ↑ 符号位 符号位 小数 +53.625和-53.625的原码可分别写成: 十进制数 + 53.625 -53.625 二进制原码 0 110101.101 1 1101010.101 ↑ ↑ 符号位 符号位 因此,整数原码的定义为: 十进制 9 7 2 . 6 5
1.4.4 码制 2. 反码表示法 【例1-13】用四位二进制数表示十进制数+5和-5的反码。 解: 1.4.4 码制 2. 反码表示法 【例1-13】用四位二进制数表示十进制数+5和-5的反码。 解: 可以先求十进制数所对应二进制数的原码,再将原码转换成反码。 十进制数 + 5 – 5 二进制原码 0 101 1 101 二进制反码 0 101 1 010 ↑ ↑ 符号位 符号位 即 [+5]反=0101 ,[-5]反= 1010。
1.4.4 码制 3. 补码表示法 (1)整数补码的定义: 十进制 9 7 2 . 6 5
(1)整数补码的定义: 【例1-14】用四位二进制数表示+5和-5的补码。 解: 解题的过程三步:先求十进制数所对应二进制数的原码,再将原码转换成反码,然后将反码变为补码。 十进制数 + 5 – 5 二进制原码 0 101 1 101 二进制反码 0 101 1 010 二进制补码 0 101 1 010+1=1 011 ↑ ↑ 符号位 符号位 即 [+5]补=0101 ,[-5]补= 1011。
(1)整数补码的定义: 表1-5 四位有符号数的表示 b3b2b1b0 原码 反码 补码 0111 +7 1000 -0 -7 -8 0110 +6 1001 -1 -6 0101 +5 1010 -2 -5 0100 +4 1011 -3 -4 0011 +3 1100 0010 +2 1101 0001 +1 1110 0000 +0 1111 3. 补码表示法 (1)整数补码的定义: 十进制 9 7 2 . 6 5
[y]原码 = 10001011, [y]反码 = 11110100, [y]补码 = 11110101 (1)整数补码的定义: 【例1-15】 求二进制数x = +1011,y = -1011在八位存贮器中的原码、反码和补码的表示形式。 解: 无论是原码、反码和补码形式,八位存贮器的最高位为符号位,其它位则是数值部分的编码表示。在数值部分中,对于正数,原码、反码和补码各位相同,而对于负数,反码是原码的按位求反,补码则是原码的按位求反加1。所以,二进制数x和y的原码、反码和补码分别表示如下: [x]原码 = 00001011, [x]反码 = 00001011, [x]补码 = 00001011 [y]原码 = 10001011, [y]反码 = 11110100, [y]补码 = 11110101
(1)整数补码的定义: 【例1-16】求X=-1001010的补码。 解: [x]补=28+(-1001010) =10000 0000-1001010 =1011 0110。
(2)定点小数(二进制小数)补码的定义 二进制小数的补码定义为 【例1-17】求X1=+0.101 1011和X2=-0.101 1011的补码。 解: [X1]补=0.101 1011 [X2]补=2+(-0.101 1011) =10-0.101 1011 =1.010 0101
1.4.5 用补码进行二进制数计算 原码中的符号位不参加运算。 同符号数相加作加法;不同符号数相加作减法。 1.原码运算 2.补码运算 运算时符号位和数值一起参加运算,不单独处理。 [X+Y]补=[X]补+[Y]补; [X-Y]补=[X]补+[-Y]补。 3.反码运算 运算时符号位与数值一起参加运算,如果符号位产生了进位,则此进位应加到和数的最低位,称为循环进位。 [X+Y]反=[X]反+[Y]反; [X-Y]反=[X]反+[-Y]反。
1.4.5 用补码进行二进制数计算 【例1-18】设X=+101 1101,Y=+001 1010,求Z=X-Y。 1 解: (1) 原码运算 [X]原=0101 1101 ,[Y]原=0001 1010 因为|X|>|Y|,所以X作被减数,Y作减数,差値为正。 1 - 即[Z]原=0100 0011, 其真値为 Z=+100 0011。
1.4.5 用补码进行二进制数计算 【例1-18】设X=+101 1101,Y=+001 1010,求Z=X-Y。 解: (2)反码运算 + (1) 即[Z]原=0100 0011, 其真値为 Z=+100 0011。
1.4.5 用补码进行二进制数计算 1 【例1-18】设X=+101 1101,Y=+001 1010,求Z=X-Y。 + 解: (3)补码运算 [X]补=0101 1101 ,[Y]补=1110 0110 1 + (1) 舍弃 即 [Z]补=0100 0011, 其真値为 Z=+100 0011。
本 章 小 结 0和1 0~2N-1 0~7 0~9,A~F 二进制(八进制或十六进制) 到十进制 转换 八进制 二进制 转换 二进制(八进制或十六进制) 到十进制 转换 八进制 二进制 转换 二进制 八进制 (或十六进制) 转换 转换 十进制 二进制、八进制、十六进制 八进制 十六进制 转换 编码 代码 BCD码 余3码 格雷码 ASCII码 BCD码 原码 反码 补码