1 / 49

第一章 数制与编码

第一章 数制与编码. 前言. 认识数字逻辑 数字逻辑 , 即数字电路逻辑设计。是计算机专业硬件课程的基础课程。学好该课程,可为以后学习计算机组成原理、微机原理、系统结构等计算机核心课程打下坚实基础。 模拟量 :连续变化的物理量,如声音、速度、温度等。 数字量 :间断变化的物理量,如电子表。 讲述内容 应用数字电路进行数字系统逻辑设计的方法。分为“分析”与“设计”。 第一、二章为基础知识,第三、四、五章为本书重点,第六章为应用。其余章节为选讲章节。. 数制及其转换 带符号数的代码表示

Download Presentation

第一章 数制与编码

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第一章 数制与编码

  2. 前言 • 认识数字逻辑 • 数字逻辑,即数字电路逻辑设计。是计算机专业硬件课程的基础课程。学好该课程,可为以后学习计算机组成原理、微机原理、系统结构等计算机核心课程打下坚实基础。 • 模拟量:连续变化的物理量,如声音、速度、温度等。 • 数字量:间断变化的物理量,如电子表。 • 讲述内容 • 应用数字电路进行数字系统逻辑设计的方法。分为“分析”与“设计”。 • 第一、二章为基础知识,第三、四、五章为本书重点,第六章为应用。其余章节为选讲章节。

  3. 数制及其转换 • 带符号数的代码表示 • 数的定点表示与浮点表示 • 数码和字符的代码表示

  4. 数制及其转换 • 1.数制 • 1.1 概念 • 基数:每个进位制的符号个数,及进位规则。 • 权:某一进位制中各位“1”所表示的值为该位的权。 • 例如:十进制数,基数为10 ,第i位权值为10i-1 • 推广:R进制数,基数为R,第i位权值为(R)i-1,表示方法(X)R

  5. 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

  6. 例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

  7. 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

  8. 2. 数制转换 (1)二进制数到十进制数 方法:按权值展开法 (1011)2=1×23+0×22+1×20=8+2+1=(11)10 (2)十进制数到二进制数 方法:整数部分,除2取余;小数部分,乘2取整

  9. 例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

  10. 练习:(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进制数用“除基取余”法。

  11. 例2:将十进制数0.625转换为二进制数。 用小数部分连续与 2 相乘,并记下乘积的整数部分,直到结果小数部分为 0 ,或精度达到要求为止。所得整数部分从上至下即为转换结果。 0.625 整数 × 2 .250 1 × 2 .500 0 × 2 (0.625)10=(0.101)2 .000 1

  12. 练习:将(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进制数,整数部分用除基取余法,小数部分用乘基取整法。

  13. 练习:将(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

  14. (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

  15. 总结: 整:除2取余,小:乘2取整 十二 按 按权展开 权 乘/除 直接转换 展 16法 开 十六

  16. 带符号数的代码表示 • 1.真值与机器数 • 真值:在算术运算中,用“+”“-”符号表示正、负的数据。 • 机器值:与真值相对应,且便于计算机识别处理的数据。一般用“0”表示“+”,用“1”表示“-”。 • 一个n位的带符号二进制机器数bn-1bn-2……b1b0,最高位bn-1为符号位,bn-2bn-3……b1b0为数值位。 • 表数范围:- 2n-1 ~ 2n-1

  17. 2.三种机器数 2.1原码 •机器数原码表示,最高位是符号位,0表正号,1表负号 , 以下各位是数值的绝对值。[X]原= 符号位 + |X| •原码表示中,0有两种形式:[+0]原=00…0 [- 0]原=10…0 • •原码表示的特点 • 优点:与数的真值之间的对应关系简单;用原码实现乘除 运算规则简单。 • 缺点:减法运算的实现不方便。

  18. 2.2 反码 •最高位为符号位,其余为数值位。 •正数:反码形式同原码形式; 负数:符号位为1,数 值位为原码的数值按位取反。 • 反码中0有两种形式:[+0]反=000…0 [- 0]反=111…1 •反码运算不方便,一般不用。

  19. 2.3 补码 •最高位为符号位。 •正数的补码形式同原码形式,负数补码符号位为1,数值位为 原码数值位各位取反,再末位加1(即反码加1)。 •补码中0只有一种形式:[+0]补=[- 0]补=000…0。 •[- 1]补=100…0。 •对于负数,若已知补码求原码,末位减1,再按位求反。 •补码便于减法运算。

  20. 总结: • (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]补只有一种形式。

  21. 例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

  22. 练习: 1、设真值X为- 24≤X<24,写出下列真值的原码、反码和补码。 +1010 +1111 - 1010 - 0000

  23. 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

  24. 3. 机器数的加、减运算 • 3.1 原码运算 • 运算规则:符号相同(同号相加或异号相减),直接相加,符号不变;符号相异(异号相加或同号相减),符号与绝对值较大值保持一致,值为两数相减的结果。符号不参与运算。

  25. 例. X = +1101,Y = - 0110,求 X+Y 与 X – Y 的值。 分析:X+Y为异号相加,属符号相异情况,所以需比较两数绝对值。 X – Y 为异号相减,属符号相同情况,直接相加。 解:[ X + Y ]原 = 0 0111 [ X – Y ]原= 0 0011 用原码做加、减运算时,若符号相异,需比较其绝对值的大小关系。

  26. 3.2 反码运算 • 运算规则:[X+Y]反= [X]反+[Y]反 • [X – Y]反= [X]反+[-Y]反 • 用反码进行运算时,减法运算可转换为加法运算。运算时,符号位和数值位一样参与运算,如果符号位产生了进位,则此进位 应加到和数的最低位,称之为“循环进位”。

  27. 例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)

  28. 3.3 补码运算 • 运算规则:[X+Y]补= [X]补+[Y]补 • [X – Y]补=[X]补+[-Y]补 • 用补码进行运算时,减法运算可转换成加法运算。符号位和数值位一样参与运算,如果符号位产生进位,则将此进位丢掉。

  29. 例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

  30. 结论:用补码做减法运算,既不需要绝对值比较,也不需要循结论:用补码做减法运算,既不需要绝对值比较,也不需要循 环进位,所以用补码做减法运算最简单。 练习: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

  31. 数的定点表示和浮点表示 十进制数 二进制真值 定点表示 浮点表示 定点小数 定点整数 规格化 非规格化 原码 反码 补码 • 数的按值表示

  32. 1. 定点表示 • 定点表示法,就是计算机中数的小数点位置是固定不变的。 • (1)机器中小数点不是由实际设备保存,只是一个约定的假想位置。 • (2)对于字长为n的计算机表示带符号数时,最高位bn-1为符号位,bn-2…b0为数值位。 • (3)•小数点位置约定在最高位之前时,表示定点小数。 • (-1 < S < 1) • •小数点位置约定在最低位之后时,表示定点整数。 • (- 2n-1 < S < 2n-1) • •表示既有整数又有小数部分的数时,需事先选取一个 • “比例因子”(2i),然后可用定点小数或定点整数表示。

  33. 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, 所以无需表示。

  34. (5)浮点数的规格化 • 浮点表示的数,其尾数部分用纯小数形式给出,且当尾数不为0时,其绝对值应大于或等于0.5(即小数点后第一位必为“1”)。若不符合,应通过修改阶码,并左右移动尾数实现。可节省存储空间,避免有效数字丢失。 • (6)浮点表示与定点表示的比较 • 同一字长下,浮点表示法所能表示的数值范围较大。

  35. 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位字长为例,浮点表示法的表数范围如下:

  36. 定点表示法的表数范围如下: 15 14 ………… 1 0 Sf 最小 0 ………… 0 1 最大 1 ………… 1 1 即 2-15 ~ (1 – 2-15) 同一字长下,定点表示法所能表示的有效数字位数较多。

  37. 数码和字符的代码表示 • 用二进制码来表示数字或字符 • 1. 十进制数的常用代码 • BCD码(Binary Code Decimal)用二进制代码表示十进制数 的一种编码 。四位二进制代码可表示一位十进制数其组合有剩余,所以可有多种编码方案。 1.1 8421码(有权码) 用4 为二进制数表示一位十进制数,从左到右权值依次为8、4、2、1。

  38. 特点:排列规律自然,对应关系唯一。不允许出现1010,1011,1100,1101,1110,1111等六个代码。特点:排列规律自然,对应关系唯一。不允许出现1010,1011,1100,1101,1110,1111等六个代码。

  39. 1.2 2421码(有权码) • 用4 为二进制数表示一位十进制数,从左到右权值依次为2、4、2、1。 特点:由于有两位权值都为2,所以编码方案不唯一。 2421码是对9 的补数,即每个代码取反后与原代码和为9。

  40. 1.3 余3码(无权码) • 余3码由8421码加3所得。 特点:余3码也是一种对9互补的代码。

  41. 2. 可靠性编码 • 在代码的形成和传输过程中出现错误时,易于发现和矫正或可以避免错误的发生的代码称为可靠性编码。

  42. 2.1 格雷码 在一组数的编码中,任意两个相邻数的代码只有一位二进制数不同的编码。 可有多种编码方案,它所代表的数递增时,不会发生粗大错误。

  43. 2.2 奇偶校验码 • 由若干信息位加一位校验位生成,校验位的取值使整个代码中“1”的个数位奇数或偶数。 特点: 1.具有发现一位错的能力,当存取过程中出现两位错时无法检验; 2.不能确定具体出错位的位置; 3.需要奇偶校验位形成电路和检测电路。

  44. 十进制数的补数 • 一、.对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

  45. 2.运算 [N1-N2]9补=[N1]9补+[-N2]9补 注:需要循环进位。 例. N1=5489,N2=3250,求N1-N2。 解: [N1-N2]9补=[N1]9补+[-N2]9补 =05489+96749 =02239

  46. 二、对10的补数 • 1.规则 • 正数 符号位为0,数值位为十进制数本身 • 负数 [N]10补=10n+N • ( 其中,n为N的位数+1。) 2.运算 [N1-N2]10补=[N1]10补+[-N2]10补 注:不需要循环进位。

  47. 例. N1=72532,N2=33256,求N1-N2。 解: [N1-N2]10补=[N1]10补+[-N2]10补 =072532+966744 =39276

  48. 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

More Related