490 likes | 614 Views
第一章 数制与编码. 前言. 认识数字逻辑 数字逻辑 , 即数字电路逻辑设计。是计算机专业硬件课程的基础课程。学好该课程,可为以后学习计算机组成原理、微机原理、系统结构等计算机核心课程打下坚实基础。 模拟量 :连续变化的物理量,如声音、速度、温度等。 数字量 :间断变化的物理量,如电子表。 讲述内容 应用数字电路进行数字系统逻辑设计的方法。分为“分析”与“设计”。 第一、二章为基础知识,第三、四、五章为本书重点,第六章为应用。其余章节为选讲章节。. 数制及其转换 带符号数的代码表示
E N D
前言 • 认识数字逻辑 • 数字逻辑,即数字电路逻辑设计。是计算机专业硬件课程的基础课程。学好该课程,可为以后学习计算机组成原理、微机原理、系统结构等计算机核心课程打下坚实基础。 • 模拟量:连续变化的物理量,如声音、速度、温度等。 • 数字量:间断变化的物理量,如电子表。 • 讲述内容 • 应用数字电路进行数字系统逻辑设计的方法。分为“分析”与“设计”。 • 第一、二章为基础知识,第三、四、五章为本书重点,第六章为应用。其余章节为选讲章节。
数制及其转换 • 带符号数的代码表示 • 数的定点表示与浮点表示 • 数码和字符的代码表示
数制及其转换 • 1.数制 • 1.1 概念 • 基数:每个进位制的符号个数,及进位规则。 • 权:某一进位制中各位“1”所表示的值为该位的权。 • 例如:十进制数,基数为10 ,第i位权值为10i-1 • 推广:R进制数,基数为R,第i位权值为(R)i-1,表示方法(X)R
1.2 二进制数及其运算规则 二进制数即基数为 2,计数规则为“逢二进一”。 (1)加法规则:0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 0(有进位) (2)减法规则:0 - 0 = 0 0 – 1 = 1(有借位) 1- 0 = 1 1- 1 = 0 (3)乘法规则:0×0 = 0 0×1 = 0 1×0 = 0 1×1 = 1 (4)除法规则:0÷1 = 0 1÷1 = 1
例4. 计算10010001÷1011 1 0 0 1 0 0 0 1 例3. 计算1101×1001 1 1 0 1 × 1 0 0 1 1 0 1 1 + 1 1 1 0 1 0 1 • 例1. 计算1101+1011 • 1 1 0 1 例2. 计算11101 – 10011 1 1 1 0 1 1 + 1 0 1 1 - 1 0 0 1 1 1 11 10 10 10 1 1 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0
1.3 表示方法(1)并列表示法(N)R=(An-1An-2…A1A0.A-1A-2…A-m)R 如:(27)10=(11011)2=(1B)16 (2)多项式表示法(N)R=(An-1×Rn-1+ An-2×Rn-2+…+A0×R0+A-1×R-1+A-2×R-2+…+A-m×R-m)R n-1 =∑(Ai×Ri)(其中,n为整数位数,m为小数位数,R为基数,0≤Ai≤R-1) 如(27)10=(2×101+7×100)10=(1×24+1×23+0×22+1×21+1×20)2 =(1×161+10×160)16 i=-m
2. 数制转换 (1)二进制数到十进制数 方法:按权值展开法 (1011)2=1×23+0×22+1×20=8+2+1=(11)10 (2)十进制数到二进制数 方法:整数部分,除2取余;小数部分,乘2取整
例1:将(693)10转换成二进制数 由于是整数,用除2取余法,即用整数部分不断去除2,并记下每次的余数,直到商为0为止。余数从下至上即为转换结果。 2 346 1 693 余数 2 173 0 2 86 1 2 43 0 (639)10=(1010110101)2 2 21 1 2 10 1 2 5 0 2 2 1 2 1 0 2 0 1
练习:(73)10 转换为二进制数。 • 73 余数 • 2 36 1 • 18 0 • 2 9 0 • 4 1 • 2 2 0 • 1 0 (73)10=(1001001)2 • 0 1 十进制整数转换为R进制数用“除基取余”法。
例2:将十进制数0.625转换为二进制数。 用小数部分连续与 2 相乘,并记下乘积的整数部分,直到结果小数部分为 0 ,或精度达到要求为止。所得整数部分从上至下即为转换结果。 0.625 整数 × 2 .250 1 × 2 .500 0 × 2 (0.625)10=(0.101)2 .000 1
练习:将(0.364)10转换为二进制数,结果保留4位小数。练习:将(0.364)10转换为二进制数,结果保留4位小数。 0.364 整数 × 2 .728 0 × 2 .456 1 0.456 整数 × 2 .912 0 × 2 .824 1 (0.364)10=(0.0101)2 • 十进制小数转换为R进制数用“乘基取整”法。 • 总结:十进制数转换为R进制数,整数部分用除基取余法,小数部分用乘基取整法。
练习:将(685.235)10转换为十六进制数。(保留3位小数)练习:将(685.235)10转换为十六进制数。(保留3位小数) 小数部分 0.235 整数 × 16 .760 3 × 16 .216 1 × 16 .456 3 • 整数部分 • 685 余数 • 16 42 D • 2 A • 0 2 (685.235)10=(2AD.313)16
(3)二进制数与八进制数、十六进制数之间的转换。(3)二进制数与八进制数、十六进制数之间的转换。 • 方法:直接转换法。 • 3 位二进制数与 1 位八进制数一一对应,4 位二进制数与 1 位十六进制数一一对应。 • 对于十六进制数,整数部分将二进制数从右到左以4位为一组分成若干组,最后一组不足4位在高位补 0 ;小数部分将二进制数从左到右以4位一组分成若干组,最后一组不足4位在右端补 0 。按一一对应关系即可转换。 例2:(1)将(11001011011.11001)2 转换成十六进制数。 (2)将(734.25)8 转换成二进制数。 (0110 0101 1011.11001000)2=(65B.C8)16 (734.25)8=(111 011 100.010 101)2
总结: 整:除2取余,小:乘2取整 十二 按 按权展开 权 乘/除 直接转换 展 16法 开 十六
带符号数的代码表示 • 1.真值与机器数 • 真值:在算术运算中,用“+”“-”符号表示正、负的数据。 • 机器值:与真值相对应,且便于计算机识别处理的数据。一般用“0”表示“+”,用“1”表示“-”。 • 一个n位的带符号二进制机器数bn-1bn-2……b1b0,最高位bn-1为符号位,bn-2bn-3……b1b0为数值位。 • 表数范围:- 2n-1 ~ 2n-1
2.三种机器数 2.1原码 •机器数原码表示,最高位是符号位,0表正号,1表负号 , 以下各位是数值的绝对值。[X]原= 符号位 + |X| •原码表示中,0有两种形式:[+0]原=00…0 [- 0]原=10…0 • •原码表示的特点 • 优点:与数的真值之间的对应关系简单;用原码实现乘除 运算规则简单。 • 缺点:减法运算的实现不方便。
2.2 反码 •最高位为符号位,其余为数值位。 •正数:反码形式同原码形式; 负数:符号位为1,数 值位为原码的数值按位取反。 • 反码中0有两种形式:[+0]反=000…0 [- 0]反=111…1 •反码运算不方便,一般不用。
2.3 补码 •最高位为符号位。 •正数的补码形式同原码形式,负数补码符号位为1,数值位为 原码数值位各位取反,再末位加1(即反码加1)。 •补码中0只有一种形式:[+0]补=[- 0]补=000…0。 •[- 1]补=100…0。 •对于负数,若已知补码求原码,末位减1,再按位求反。 •补码便于减法运算。
总结: • (1)当真值X为n位整数时,机器数[X]原、[X]反、[X]补都为n+1位的数,可为字长为n+1位的计算机所表示。 • (2)当真值X为正时,[X]原、[X]反、[X]补最高位都等于0,X为负时,其最高位均为1。 • (3)当X为正值时,[X]原、[X]反、[X]补的数值位均与真值完全相同;当X为负值时,数值位:[X]原保持X的原样,[X]反是各位取反,[X]补是各位取反末位加1。 • (4)当X为0时,[X]原和[X]反有两种形式,[X]补只有一种形式。
例1:已知X = +101101,Y = - 101101,分别求二数的原码、反码、补码。 [X]原=[X]反=[X]补 = 0101101 [Y]原= 1101101 [Y]反= 1010010 [Y]补= 1010011 例2:已知[X]原= 1110001,[Y]补= 1110001,求X,Y。 X = - 110001 [Y]反= 1110000 [Y]原= 1001111 所以,Y = - 001111
练习: 1、设真值X为- 24≤X<24,写出下列真值的原码、反码和补码。 +1010 +1111 - 1010 - 0000
2、写出下列机器数对应的真值 [X1]原= 11011 [X2]反= 11011 [X3]补= 11011 [X4]原= 00000 [X5]反= 01111 [X6]补= 01000 X1 = - 1011 X2 = -0100 X3 = - 0101 X4 = +0000 X5 = +1111 X6 = +1000
3. 机器数的加、减运算 • 3.1 原码运算 • 运算规则:符号相同(同号相加或异号相减),直接相加,符号不变;符号相异(异号相加或同号相减),符号与绝对值较大值保持一致,值为两数相减的结果。符号不参与运算。
例. X = +1101,Y = - 0110,求 X+Y 与 X – Y 的值。 分析:X+Y为异号相加,属符号相异情况,所以需比较两数绝对值。 X – Y 为异号相减,属符号相同情况,直接相加。 解:[ X + Y ]原 = 0 0111 [ X – Y ]原= 0 0011 用原码做加、减运算时,若符号相异,需比较其绝对值的大小关系。
3.2 反码运算 • 运算规则:[X+Y]反= [X]反+[Y]反 • [X – Y]反= [X]反+[-Y]反 • 用反码进行运算时,减法运算可转换为加法运算。运算时,符号位和数值位一样参与运算,如果符号位产生了进位,则此进位 应加到和数的最低位,称之为“循环进位”。
例1.X = +0110,Y = - 0010,求[X+Y]反、[X – Y]反。 解:[X+Y]反= [X]反+[Y]反= 00110+11101 = 00100 (+0100) 用反码进行加减运算时,不需考虑两数的大小关系,但有最高位进位时,需“循环进位”。 0 0 1 1 0 + 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 [X – Y]反= [X]反+[- Y]反= 00110+00010 =01000 (+1000)
3.3 补码运算 • 运算规则:[X+Y]补= [X]补+[Y]补 • [X – Y]补=[X]补+[-Y]补 • 用补码进行运算时,减法运算可转换成加法运算。符号位和数值位一样参与运算,如果符号位产生进位,则将此进位丢掉。
例2. X = +0110,Y = - 1010,求 [X+Y]补,[X – Y]补。 解:[X+Y]补= [X]补+[Y]补 先求[X]补,[Y]补:[X]补= 00110,[Y]补= 10110 = 00110+10110 = 11100 0 0 1 1 0 + 1 0 1 1 0 1 1 1 0 0 • [X – Y]补= [X]补+[- Y]补= 00110+ 01010 = 10000 [- Y]补= [+1010]补= 01010
结论:用补码做减法运算,既不需要绝对值比较,也不需要循结论:用补码做减法运算,既不需要绝对值比较,也不需要循 环进位,所以用补码做减法运算最简单。 练习:X = +0110,Y = - 1000,求 X+Y、X – Y。 [X+Y]补= [X]补+[Y]补 = 00110+11000 = 11110 所以,X+Y = - 0010 [X – Y]补= [X]补+[- Y]补 = 00110+01000 = 01110 [- Y]补= [+1000]补= 01000 所以,X – Y = +1110
数的定点表示和浮点表示 十进制数 二进制真值 定点表示 浮点表示 定点小数 定点整数 规格化 非规格化 原码 反码 补码 • 数的按值表示
1. 定点表示 • 定点表示法,就是计算机中数的小数点位置是固定不变的。 • (1)机器中小数点不是由实际设备保存,只是一个约定的假想位置。 • (2)对于字长为n的计算机表示带符号数时,最高位bn-1为符号位,bn-2…b0为数值位。 • (3)•小数点位置约定在最高位之前时,表示定点小数。 • (-1 < S < 1) • •小数点位置约定在最低位之后时,表示定点整数。 • (- 2n-1 < S < 2n-1) • •表示既有整数又有小数部分的数时,需事先选取一个 • “比例因子”(2i),然后可用定点小数或定点整数表示。
N = RJ×S R:基数,J:阶码 S:尾数 阶符 阶码 尾数 尾符 1位 n位 1位 m位 • 2. 浮点表示 (1)浮点表示就是在计算机中数的小数点位置不是 固定的,而是浮动的。 (2)浮点表示源于“记阶表示法”,如:十进制数 5678 = 0.5678×104 0.005678 = 0.5678×10-2 (3)用浮点表示时,一个字的格式为 字长= n+m+2,浮点表示中,基数默认为2, 所以无需表示。
(5)浮点数的规格化 • 浮点表示的数,其尾数部分用纯小数形式给出,且当尾数不为0时,其绝对值应大于或等于0.5(即小数点后第一位必为“1”)。若不符合,应通过修改阶码,并左右移动尾数实现。可节省存储空间,避免有效数字丢失。 • (6)浮点表示与定点表示的比较 • 同一字长下,浮点表示法所能表示的数值范围较大。
15 14 13 12 11 10 9 1 0 …… Jf Sf 最小 − 1 1 1 1 0 …… 0 1 最大 + 1 1 1 1 1 …… 1 1 即 2-15×2-10 ~ 2+15×(1 – 2-10) 2-25 ~ (2+15 – 2+5) 以16位字长为例,浮点表示法的表数范围如下:
定点表示法的表数范围如下: 15 14 ………… 1 0 Sf 最小 0 ………… 0 1 最大 1 ………… 1 1 即 2-15 ~ (1 – 2-15) 同一字长下,定点表示法所能表示的有效数字位数较多。
数码和字符的代码表示 • 用二进制码来表示数字或字符 • 1. 十进制数的常用代码 • BCD码(Binary Code Decimal)用二进制代码表示十进制数 的一种编码 。四位二进制代码可表示一位十进制数其组合有剩余,所以可有多种编码方案。 1.1 8421码(有权码) 用4 为二进制数表示一位十进制数,从左到右权值依次为8、4、2、1。
特点:排列规律自然,对应关系唯一。不允许出现1010,1011,1100,1101,1110,1111等六个代码。特点:排列规律自然,对应关系唯一。不允许出现1010,1011,1100,1101,1110,1111等六个代码。
1.2 2421码(有权码) • 用4 为二进制数表示一位十进制数,从左到右权值依次为2、4、2、1。 特点:由于有两位权值都为2,所以编码方案不唯一。 2421码是对9 的补数,即每个代码取反后与原代码和为9。
1.3 余3码(无权码) • 余3码由8421码加3所得。 特点:余3码也是一种对9互补的代码。
2. 可靠性编码 • 在代码的形成和传输过程中出现错误时,易于发现和矫正或可以避免错误的发生的代码称为可靠性编码。
2.1 格雷码 在一组数的编码中,任意两个相邻数的代码只有一位二进制数不同的编码。 可有多种编码方案,它所代表的数递增时,不会发生粗大错误。
2.2 奇偶校验码 • 由若干信息位加一位校验位生成,校验位的取值使整个代码中“1”的个数位奇数或偶数。 特点: 1.具有发现一位错的能力,当存取过程中出现两位错时无法检验; 2.不能确定具体出错位的位置; 3.需要奇偶校验位形成电路和检测电路。
十进制数的补数 • 一、.对9 的补数 • 1.规则:正数符号位为0,数值位为十进制数本身 • 负数 [N]9补=10n-10-m+N • (其中n是十进制数N整数位数+1,m是N小数的位数) 例.[8954]9补= [-3250]9补= [-25.639]9补= 08954 105-1-3250 = 96749 103-10-3-25.639 = 974.360
2.运算 [N1-N2]9补=[N1]9补+[-N2]9补 注:需要循环进位。 例. N1=5489,N2=3250,求N1-N2。 解: [N1-N2]9补=[N1]9补+[-N2]9补 =05489+96749 =02239
二、对10的补数 • 1.规则 • 正数 符号位为0,数值位为十进制数本身 • 负数 [N]10补=10n+N • ( 其中,n为N的位数+1。) 2.运算 [N1-N2]10补=[N1]10补+[-N2]10补 注:不需要循环进位。
例. N1=72532,N2=33256,求N1-N2。 解: [N1-N2]10补=[N1]10补+[-N2]10补 =072532+966744 =39276
1.实现下列机器数间的转换 • (1)[x]原=10110,求[x]反; • (2)[x]反=10110,求[x]补; • (3)[x]补=10110,求[x]原。 • 2.已知[x]原=01101,[y]原=10101,将x,y转换成补码,求 • x+y,再将结果转换成原码。 • 3.完成下列代码间转换 • (100000111001.01110101)8421=()10 • (1011001111001001)余3=()2421 • (752.18)10=()余3 • 4.确定下列二进制代码的偶校验码 • 1010101 , 100100100