计算机组成原理第二章运算方法和运算器.ppt

上传人:za****8 文档编号:15495534 上传时间:2020-08-13 格式:PPT 页数:198 大小:2.83MB
收藏 版权申诉 举报 下载
计算机组成原理第二章运算方法和运算器.ppt_第1页
第1页 / 共198页
计算机组成原理第二章运算方法和运算器.ppt_第2页
第2页 / 共198页
计算机组成原理第二章运算方法和运算器.ppt_第3页
第3页 / 共198页
资源描述:

《计算机组成原理第二章运算方法和运算器.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理第二章运算方法和运算器.ppt(198页珍藏版)》请在装配图网上搜索。

1、2020/8/13,计算机组成原理 第二章,1,第二章 运算方法和运算器,运算器是计算机进行算术运算和逻辑运算的主要部件。运算器的逻辑结构取决于机器的指令系统、数据表示方法和运算方法。,返回,2,2020/8/13,计算机组成原理 第二章运算方法和运算器,教学目标 理解和掌握数据在运算器中的基本运算方法 理解运算器核心部件ALU的组成与工作原理 教学重点 运算器的核心部件ALU的组成和工作原理 定点数和浮点数四则运算,第二章 运算方法和运算器,3,2020/8/13,计算机组成原理 第二章运算方法和运算器,第二章 主要教学内容,数据表示和运算方法是设计实现计算机运算器部件的理论基础。 计算机中

2、都使用二进制的信息编码。二进制编码和码制转换是数据运算的数学基础。 整数的原码、补码表示是为了简化数据运算的方案,可以简化用到的硬件线路,提高运算速度。 数据的检错纠错编码技术是提高硬件可靠性的有效措施。 本章核心是计算机的运算器部件,有定点运算器和浮点运算器2种类型,是实现数据运算的执行部件。 重点学习定点运算器,由完成算术与逻辑运算的电路 ALU 和暂存运算数据和中间结果的寄存器组 REGs 、保存结果特征状态的Flag 寄存器这3个主要部分组成。 一般了解浮点运算器的组成和浮点数的运算方法。,2020/8/13,4,第二章 运算方法和运算器,2.1 数据与文字的表示 2.2 定点加法、减

3、法运算 2.3 定点乘法运算 2.4 定点除法运算 2.5 定点运算器的组成 2.6 浮点运算与浮点运算器,返回,5,2020/8/13,计算机组成原理 第二章运算方法和运算器,2.1 数据与文字的表示方法,1 数字信息和二进制编码知识 (1)二进制编码知识 (2)字符的表示 (3)汉字的表示 (4)校验码 2 数的机器码表示,6,2020/8/13,计算机组成原理 第二章运算方法和运算器,2.1 数据与文字的表示方法,计算机中使用的数据分成两大类 符号数据:非数字符号的表示(ASCII、汉字、图形等) 数值数据:数字数据的表示方式(定点、浮点) 计算机数字和字符的表示方法应有利于数据的存储、

4、加工(处理)、传送; 编码:用少量、简单的基本符号,选择合适的规则表示尽量多的信息,同时利于信息处理(速度、方便)。,7,2020/8/13,计算机组成原理 第二章运算方法和运算器,复习-数字信息和二进制编码知识,数值、文字、符号、语音和图形 等统称信息,在计算机内部,信息都必须用数字化的形式被存储、加工和传送,不同信息要通过编码来表示。 数字化信息编码的二个要素: 少量简单的基本符号 一定的组合规则 计算机中普遍选用两个基本点符号: 优点是: 基本符号个数最少,物理上容易实现 二进制码表示数值数据运算规则简单 与二值逻辑的 真、假 两个值对应简单,8,2020/8/13,计算机组成原理 第二

5、章运算方法和运算器,二进制数据算术运算规则,(2) 减法运算规则 0-0=0 0-1=1 并产生借位 1-0=1 1-1=0,(1) 加法运算规则 0+0=0 0+1=1 1+0=1 1+1=0 并产生进位,例如: 0101,+) 0001,0110,例如: 1011,) 0101,0110,0110,9,2020/8/13,计算机组成原理 第二章运算方法和运算器,二进制数据算术运算规则,乘法运算规则 例如: 1101 00=0 ) 0101 01=0 1101 10=0 0000 11=1 1101 1000001,除法运算规则 0101 例如: 1101 1000001 1000001 /

6、 1101 = 0101 1101 01101 1101 0,10,2020/8/13,计算机组成原理 第二章运算方法和运算器,逻辑型数据基本运算规则,一个二进制数位可以用来表示一个二值逻辑型的数据,更准确的说法应该是一位基二码而不是二进制的数位,因为逻辑型数据并不存在进位关系。这里的与、或、非逻辑可以用与门、或门、非门电路实现 。,11,2020/8/13,计算机组成原理 第二章运算方法和运算器,数制与进位记数法,基 r 数制的概念 只用 r 个基本符号 ( 例如 0,1,2,r-1 ) 通过排列起来的符号串表示数值,r 称为该数制的基。 数值 N 的表示 N = Dm-1Dm-2 D1 D

7、0D-1D-2 D-k 有权的基 r 数制 每个Di(-kim-1)的单位值都赋以固定的值Wi,则称 Wi 为该位的 权 。 N 代表的实际值可表示为:,12,2020/8/13,计算机组成原理 第二章运算方法和运算器,数制与进位记数法,若逢 r 进位,有 Wi = ri ,则 N 代表一个数值 r 是这个数制的基 i 表示这些符号排列的位号 Di 是位序号为 i 的位上的一个符号 ri 是位序号为 i 的位上的一个 1 代表的值 Di ri 是第 i 位的符号所代表的实际值 表示 对 m+k 位的值求累加和 称此数制为 r 进位数制,简称 r 进制。最常用的有二进制、八进制、十六进制 和 十

8、进制 这 4 种。,ri,13,2020/8/13,计算机组成原理 第二章运算方法和运算器,数制与进位记数法,计算机中常用的 4 种进位数制 二进制:r = 2, 基本符号:0 1 八进制:r = 8, 基本符号:0 1 2 3 4 5 6 7 十进制:r = 10,基本符号:0 1 2 3 4 5 6 7 8 9 十六进制:r = 16,基本符号: 0 1 2 3 4 5 6 7 8 9 A B C D E F 其中 AF 表示十进制数 1015 4 种进位数制之间的关系: 二进制用于计算机内部,八和十六进制是二进制的缩写, 十进制用于人员。,14,2020/8/13,计算机组成原理 第二章

9、运算方法和运算器,二进制数八、十六和十进制,二进制数转换为十进制数: 累加二进制数中全部数值为 1 的那些位的位权 (1101.1100)2=(123+122+021+120)10 + (12-1+12-2+02-3+02-4)10 = (13.75)10 把二进制数转换成八或十六进制数时,从小数点向左和向右把每 3 或者 4 个二进制位分成一组,直接写出每一组所代表的数值,小数点后不足位数补0。 (1101.1001)2 = (D.9)16 = (15.44)8 ,而不是(15.41)8,15,2020/8/13,计算机组成原理 第二章运算方法和运算器,数制与进位记数法,二进位数和十进制数之

10、间的转换方法 二进制:r = 2, 基本符号:0 1 十进制:r = 10,基本符号:0 1 2 3 4 5 6 7 8 9 求二进制数所对应的十进制数值,可通过进位记数公式来计算,即把取值为 1 的数位的位权累加。 把十进制数转换为二进制,对整数部分通过除 2取余数来完成,对小数部分通过乘 2 取整数来完成。 2 13-1 低位 0.762 2 6-0 1 0.522 高位 2 3-1 1 0.042 2 1-1 高位 0 0.082 0 0 0.16 低位 (13)10 = (1101)2 (0.76)10 = (0.1100)2,16,2020/8/13,计算机组成原理 第二章运算方法和

11、运算器,基二码应用实例:数据表示,(1)逻辑型数据 (2)字符型数据 ASCII 码 EBCDIC 码 字符串 汉字 (3)数值型数据 定点小数 整数 浮点数 二十进制数(BCD码),17,2020/8/13,计算机组成原理 第二章运算方法和运算器,(1)逻辑型数据,逻辑型数据只有两个值:真 和 假,正好可以用二进制码的两个符号分别表示, 例如 1 表示 真 则 0 表示 假 不必使用另外的编码规则。 对逻辑型数据可以执行逻辑的 与 或 非等基本逻辑运算。其规则如下:,18,2020/8/13,计算机组成原理 第二章运算方法和运算器,逻辑型数据基本运算规则,一个二进制数位可以用来表示一个二值逻

12、辑型的变量,更准确的说法应该是一个基二码位而不是二进制的数位,因为逻辑型数据不存在进位关系。这里的与、或、非逻辑可以用与门、或门、非门电路实现 。,19,2020/8/13,计算机组成原理 第二章运算方法和运算器,(2)字符型数据的表示,字符作为人机联系的媒介,是最重要的数据类型之一,当前的西文字符集由 128 个符号组成,通常用 8 位二进制编码,即用一个字节来表示一个符号,常用的两个标准字符集是: ASCII 码: 即 American Standard Code for Information Interchange EBCDIC码:即 Extended Binary Coded Dec

13、imal Interchange Code ASCII码字符集具体编码如下表所示:,20,2020/8/13,计算机组成原理 第二章运算方法和运算器,ASCII 码字符集,21,2020/8/13,计算机组成原理 第二章运算方法和运算器,字符串的表示与存储,字符串是指连续的一串字符,它们占据主存中连续的多个字节,每个字节存放一个字符,对一个主存字的多个字节,有按从低位到高位字节次序存放的,也有按从高位到低位字节次序存放的。表示字符串数据要给出串存放的主存起始地址和串的长度。例如: IF AB THEN READ(C) 就可以有如下不同存放方式: I F A A F I B T T B H E

14、N N E H R E A D D A E R ( C ) ) C (,假定每个字 由 4 个字节组成,22,2020/8/13,计算机组成原理 第二章运算方法和运算器,字符串的表示与存储,0,8 7,16 15,24 23,31,按从低位到高位字节次序存放,16进制数据,23,2020/8/13,计算机组成原理 第二章运算方法和运算器,汉字的内码表示,通常用两个字节表示一个汉字。 为了与西文字符编码相区别(西文的ASCII码的最高一位编码值为 0),表示一个汉字时,把两个字节的最高一位的编码值设定为 1,则该编码集的最多编码数量为 128 128。 这种编码方案与西文传送中的把 ASCII

15、码的最高一位用作奇偶校验位有矛盾。,24,2020/8/13,计算机组成原理 第二章运算方法和运算器,汉字的表示方法,汉字内码 内码是用于汉字信息的存储、交换、检索等操作的机内代码,它一般采用两个字节的二进制形式表示一个汉字。 汉字输入编码 输入编码是为了使用西文标准键盘把汉字输入到计算机中,其编码方法主要有数字编码、拼音码和字形编码三类。 汉字字模编码 字模编码是以点阵方式用来描述 汉字字形的代码,它是汉字的输 出形式。,25,2020/8/13,计算机组成原理 第二章运算方法和运算器,UNICODE编码,Unicode是完全双字节表示的多国文字编码体系,编码空间 0 x0000-0 xFF

16、FF。可以表示 65536 个字符; ISO 10646.1 汉字标准使用编码 0 x4E00-9FA5, 共包含20902个汉字。 将整个编码空间划分为块,每块为 16 的整数倍,按块进行分配; 并无法覆盖所有字符。,26,2020/8/13,计算机组成原理 第二章运算方法和运算器,数值数据在计算机内的格式,定点小数: N = N N N .N,s,-1,-n,-2,整 数: N = N N . N N,0,1,s,n-1,浮点数: N = M E E .E E M M .M,s,s,m-1,1,0,-1,-2,-n,符号位 阶码位 尾数数码位 总位数,短浮点数: 1 8 23 32,长浮点

17、数: 1 11 52 64,临时浮点数: 1 15 64 80,IEEE 标准: 阶码用移码 尾数用原码,基为 2,27,2020/8/13,计算机组成原理 第二章运算方法和运算器,数值范围和数据精度,数值范围 数值范围是指一种类型的数据所能表示的最大值和最小值; 数据精度 通常指实数所能给出的有效数字位数;对浮点数来说,精度不够会造成误差,误差大量积累会出问题。 机内处理 数值范围与数据精度概念不同。在计算机中,它们的值与用多少个二进制位表示某种类型的数据,以及怎么对这些位进行编码有关。,28,2020/8/13,计算机组成原理 第二章运算方法和运算器,二 十进制码(BCD码),用 4 位二

18、进制表示 1 位十进制数,一个多位的十进制数被表示为这种编码的数串,16 个编码状态中选用其中的 10 个编码有多种不同的方案: 例如:8421码, 余 3 码,格雷码 可以进一步分为有权码和无权码: 有权码:每位上的 1 代表确定的值 无权码:无法确定每位上的 1 代表的值,29,2020/8/13,计算机组成原理 第二章运算方法和运算器,0 0000 0011 0000 1 0001 0100 0001 2 0010 0101 0011 3 0011 0110 0010 4 0100 0111 0110 5 0101 1000 1110 6 0110 1001 1010 7 0111 10

19、10 1000 8 1000 1011 1100 9 1001 1100 0100,有权码 无权码,8421,余3码,格雷码,30,2020/8/13,计算机组成原理 第二章运算方法和运算器,如何判定码权,0 0000 1 0111 4 +(-2)+(-1) 2 0110 4 +(-2) 要验证每个码的值 3 0101 4 +(-1) 4 0100 4 从一编码求码权 5 1011 8 +(-2)+(-1) 6 1010 -2 结论 7 1001 -1 证明此编码系统为有权码 8 1000 8 9 1111 8 + 4 +(-2)+(-1),31,2020/8/13,计算机组成原理 第二章运算

20、方法和运算器,如何判定码权,0 0011 2+1 0 验证各码的值 1 0100 1 从一编码求码权 2 0101 1 3 0110 2 4 0111 5 1000 6 1001 结论 7 1010 证明此编码系统为无权码 8 1011 9 1100,32,2020/8/13,计算机组成原理 第二章运算方法和运算器,数值数据在计算机内的格式,定点小数: N = N N N .N,s,-1,-n,-2,整 数: N = N N . N N,0,1,s,n-1,浮点数: N = M E E .E E M M .M,s,s,m-1,1,0,-1,-2,-n,符号位 阶码位 尾数数码位 总位数,短浮点

21、数: 1 8 23 32,长浮点数: 1 11 52 64,临时浮点数: 1 15 64 80,IEEE 标准: 阶码用移码 尾数用原码,基为 2,33,2020/8/13,计算机组成原理 第二章运算方法和运算器,数值数据的编码和运算算法,二进制数值数据的类型 二进制表示的定点小数、整数和浮点数 数值数据编码目标 能方便统一地表示正数、零和负数,并且尽可能有利于简化对它们实现算术运算用到的规则; 数据符号的正与负,可用一位二进制的 0 和 1两个状态加以表示,数据数值用多位二进制表示。 常用的编码方案 原码表示、补码表示、反码表示,2020/8/13,34,2.1.1 数据格式,1. 数值数据

22、 计算机在数据、文字的表示方式时,应该考虑以下几个因素: 表示的数据类型(符号、小数点、数值) 数值的范围 数值精度 存储、处理、传送的硬件代价,2020/8/13,35,2.1.1 数据格式,2. 计算机常用的数据表示格式 定点表示:小数点位置固定 浮点表示:小数点位置不固定,2020/8/13,36,2.1.1 数据格式,3. 定点表示法 所有数据的小数点位置固定不变 理论上位置可以任意,实际上有两种方法 纯小数 纯整数 定点数表示 带符号数 不带符号数,2020/8/13,37,(1) 定点纯小数,xn xn-1 xn-2 x1 x0 表示数的范围是 0|12n,符号,量值,小数点固定于

23、符号位之后,不需专门存放位置,2.1.1 数据格式,2020/8/13,38,2.1.1 数据格式,(2) 纯小数的表示范围,2020/8/13,39,2.1.1 数据格式,(3) 定点纯整数 xn xn-1 xn-2 x1 x0 表示数的范围是 0|2n1,符号,量值,小数点固定于最后一位之后,不需专门存放位置,2020/8/13,40,2.1.1 数据格式,(4) 定点表示法的特点 定点数表示数的范围受字长限制; 表示数的范围有限; 定点表示的精度有限; 机器中,常用定点纯整数表示;相应的运算称为整数运算。,2020/8/13,41,2.1.1 数据格式,4. 浮点表示:小数点位置随阶码不

24、同而浮动 (1) 格式:N=RE.M (2) 机器中表示,指数E,基数R,取固定的值,比如10,2等,尾数M,2020/8/13,42,2.1.1 数据格式,(3) IEEE754标准 规则规定了单精度(32)和双精度(64)的基本格式。 规则中,尾数用原码,指数用移码,2020/8/13,43,2.1.1 数据格式,IEEE754标准 基数R=2,基数固定,采用隐含方式来表示它。 32位的浮点数 S是数的符号位,1位,在最高位,“0”表示正数,“1”表示负数。 M是尾数, 23位,在低位部分,采用纯小数表示。 E是阶码,8位,采用移码表示。,2020/8/13,44,规格化: 若不对浮点数的

25、表示作出明确规定,同一个浮点数的表示就不是惟一的。 尾数域最左位(最高有效位)总是1, 故这一位经常不予存储,而认为隐藏在小数点的左边。 采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。,2.1.1 数据格式,2020/8/13,45,2.1.1 数据格式,64位的浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023。因此规格化的64位浮点数x的真值为: x=(-1)S(1.M)2E-1023 e=E-1023 一个规格化的32位浮点数x的真值表示为 x=(-1)S(1.M)2E-127 e=E-12

26、7,2020/8/13,46,2.1.1 数据格式,真值x为零表示:当阶码E为全0且尾数M也为全0时的值,结合符号位S为0或1,有正零和负零之分。 真值x为无穷大表示:当阶码E为全1且尾数M为全0时,结合符号位S为0或1,也有+和-之分。,2020/8/13,47,2.1.1 数据格式,在32位浮点数表示中,要除去E用全0和全1(25510)表示零和无穷大的特殊情况,指数的偏移值不选128(10000000),而选127(01111111)。对于规格化浮点数,E的范围变为1到254,真正的指数值e则为-126到+127。因此32位浮点数表示的绝对值的范围是10-381038(以10的幂表示)。

27、,2020/8/13,48,2.1.1 数据格式,浮点数所表示的范围远比定点数大。一台计算机中究竟采用定点表示还是浮点表示,要根据计算机的使用条件来确定。一般在高档微机以上的计算机中同时采用定点、浮点表示,由使用者进行选择。而单片机中多采用定点表示。,2020/8/13,49,2.1.1 数据格式,例1:若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。 解:将16进制数展开后,可得二制数格式为 0 100 00010011 0110 0000 0000 0000 0000 S 阶码(8位) 尾数(23位) 指数e=阶码-127=10000010-0111111

28、1=00000011=(3)10 包括隐藏位1的尾数 1.M=1.011 0110 0000 0000 0000 0000=1.011011 ,于是有: x=(-1)S1.M2e=+(1.011011)23=+1011.011=(11.375)10,2020/8/13,50,2.1.1 数据格式,例2:将数(20.59375)10转换成754标准的32位浮点数的二进制存储格式。 解:首先分别将整数和分数部分转换成二进制数: 20.59375=10100.10011 然后移动小数点,使其在第1,2位之间 10100.10011=1.01001001124 e=4 于是得到:S=0, E=4+12

29、7=131, M=010010011 最后得到32位浮点数的二进制存储格式为: 0100 0001 1010 0100 1100 0000 0000 0000=(41A4C000)16,2020/8/13,51,2.1.2 数的机器码表示,机器数与真值 二进制数也有正负之分,如A=+1011,B=-0.1110,机器并不能表示“+”、“-”。引入符号位,即用一位二进制数对符号进行数字化。 真值:一般书写的数。符号用“+”、“-”表示。 机器数:机器中表示的数,对符号进行数字化。 数的符号数字化后,是否参加运算?符号参加运算后数值部分有如何处理呢? 计算机内有原码、补码、反码种机器数形式,还有专

30、门用于阶的移码形式。,2020/8/13,52,1. 原码表示法,基本思想 用0和1在原来的“+”、“-”位置上简单取代。 又称符号绝对值表示法。 例: +1010110原=01010110 -1010110原=11010110 +0.1010110原=0.1010110 -0.1010110原=1.1010110,2020/8/13,53,1. 原码表示法,定点小数 xn.xn-1x1x0 x 1x0 0,正 x原= 符号 1+|x| 0 x -1 1,负数 例:x=+0.11001110 x原=0.11001110 -x原=1.11001110,2020/8/13,54,1. 原码表示法,

31、定点整数 xnxn-1x1x0 x 2nx0 0,正数 x原= 符号 2n+|x| 0 x -2n 1,负数 有正0和负0之分 +0000原=00000 -0000原=10000,2020/8/13,55,1. 原码表示法,例:假设机器字长为16位,求+1010110、-1010110、+0. 1010110、 -0. 1010110的原码。 +1010110原=00000000011001110 - 1010110原=10000000011001110 +0.1010110原=0.1100111000000000 -0.1010110原=1.1100111000000000,2020/8/1

32、3,56,1. 原码表示法,原码特点: 表示简单,易于同真值之间进行转换。 实现乘除运算规则简单。 进行加减运算十分麻烦。,2020/8/13,57,2. 补码表示法,引入”补”:以时钟为例:假设现在时针指向3,要想让其指向9,有两种办法: 让时针顺时针转6个刻度。可表示为: 3+6=9 让时针逆时针转6个刻度。可表示为: 3-6=9 为什么加一个数和减一个数会等价呢?因为钟盘只有12个刻度,是有限的。 结论:在计数系统容量有限的前提下,加一个数和减一个数可以等价;且它们的绝对值之和就等于这个计数系统的容量。计数系统容量在计算机科学中称之为“模”。,2020/8/13,58,2. 补码表示法,

33、+7-5 (mod 12) -1011+0101 (mod 24) +7-93(mod 100) 这里的+7与-5、 -1011与+0101、 +7与-93互称为在模12、24、和100下的补数。 电子计算机系统是一种有限字长的数字系统。因此,它的所有运算都是有模运算。运算过程中超过模的部分会自然丢失。 补码的设计就是利用了有模运算的这种溢出特点,把减法变成了加法。,2020/8/13,59,2. 补码表示法,为了简化减法运算,在运算过程中,正数保持不变,负数用它的正补数来代替。描述如下: x x0 x补= x 的正补数 x0 考虑到互为补数的两个数的绝对值之和为计数系统的模,有可进一步描述为

34、: x x0 x补= 模-|x| x0,2020/8/13,60,2. 补码表示法,定义:正数的补码就是正数的本身,负数的补码是原负数加上模。 计算机运算受字长限制,属于有模运算。 定点小数:xn . xn-1 . x1x0 溢出量为2,以2为模 定点整数: xn xn-1 . x1x0 溢出量为2n+1 ,以2n+1为模 定点小数: xn . xn-1 . x1x0 x 1 x0 x补= (mod 2) 2-|x| 0 x -1,2020/8/13,61,2. 补码表示法,例:x= -0.1011 x补=10+x=10.0000-0.1011=1.0101 y=-0.01111 y补=10+

35、y=10.00000-0.01111=1,10001 定点整数: xn xn-1 . x1x0 x 2nx0 x补= (mod 2n+1) 2n+1-|x| 0 x -2n,2020/8/13,62,2. 补码表示法,求负数补码的方法 按补码的数学定义求。 从真值低位向高位检查,遇到0的时候照写下来,直到遇到第一个1,也照写下来,第一个前面的各位按位取反,符号为填1。 对其数值位各位按位取反,末位加1,符号位填1。 正数的补码 真值的符号位变1,数值位不变。,2020/8/13,63,2. 补码表示法,补码性质 最高位表明正负 正数补码,尾数与原码相同 范围-2n2n-1(定点整数) 无正零和

36、负零之分 变相补码(双符号补码) 为了防止溢出而设定,2020/8/13,64,2. 补码表示法,补码的运算 补码的符号参与运算 加法 只需把两个数先求补码,再把补码相加就可得到和的补码。 减法 只需对被减数求补码,减数取负之后再求补码,相加即可得到差的补码。 结论:一律做加法。,2020/8/13,65,2. 补码表示法,例如:X=(11)10=(1011)2 Y=(5)10=(0101)2 已知字长n=5位,求x-y补 解:x-y补= X补-Y补 =X补+-Y补 X补=01011, -y补=11011, x-y补=01011+11011=100110=00110=(6)10 注: 最高1位

37、已经超过字长故应丢掉!,2020/8/13,66,3. 反码表示法,定义:正数的表示与原、补码相同,负数的补码符号位为1,数值位是将原码的数值按位取反,就得到该数的反码表示。 电路容易实现,触发器的输出有正负之分。,2020/8/13,67,3. 反码表示法,对尾数求反,它跟补码的区别在于末位少加一个1,所以可以推出反码的定义。定点小数:xn . xn-1 . x1x0 x 1x0 x反= 2+x 2-n 0 x -1 X=+0.1011011 , X反 =0.1011011 X= -0.1011011 , X反 =1.0100100,2020/8/13,68,3. 反码表示法,x 补=x 反

38、+2-n 反码表示有正0和负0之分 上述公式解决了前边的问题(求补码还要减法),2020/8/13,69,4. 移码表示法,移码表示法 定点整数定义 x移=2n+x 2n x-2n 0000000011111111(-2n2n-1) 例:+1011111 原码为01011111 补码为01011111 反码为01011111 移码为 11011111,2020/8/13,70,4. 移码表示法,例:-1011111 原码为11011111 补码为10100001 反码为10100000 移码为00100001 特点:移码和补码尾数相同,符号位相反。 范围:-2n2n-1 P22 浮点IEEE7

39、54表示e=-127+128 00000000阶码表示数字”0”,尾数的隐含位为0 11111111阶码表示数字”无穷大” ,尾数的隐含位为0 P22 例6,2020/8/13,71,例6:以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。,2020/8/13,72,例7:将十进制真值(127,1,0,1,127)列表表示成二进制数及原码、反码、补码、移码值。,2020/8/13,73,例8:设机器字长16位,定点表示,尾数15位,数符1位,问:(1)定点原码整数表示时,最大正数是多少?最小负数是多少? (2)定点原码小数表示时,最大正数是多少?最小负数是多少?,(1

40、)定点原码整数表示 最大正数值(2151)10(32767)10 最小负数值(2151)10(32767)10 (2)定点原码小数表示 最大正数值(1215)10(0.111.11)2 最小负数值(1215)10(0.111.11)2 注:1符号,数字,2020/8/13,74,例9假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数,真值表示为(非IEEE754标准):(1)s(1.M)2E128问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?,(1)最大正数1(12-23)2127 0 1111 1111 111 1111 1111 1111 1111

41、 1111 (2)最小正数1.02128 000 000 000000 000 000 000 000 000 000 00 (3)最小负数1(1223)2127 111 111 111111 111 111 111 111 111 111 11 (4)最大负数1.02128 100 000 000000 000 000 000 000 000 000 00,2020/8/13,75,2.2 定点加法、减法运算,2.2.1 补码加减法 2.2.2 溢出检测 2.2.3 基本的加法和减法器 2.2.4 十进制加法器,2020/8/13,76,2.2.1 补码加减法,补码加法 公式:x+y补=x补

42、+y补 补码减法 公式: x-y补=x补+-y补 为了求得 -y补,需要证明-y补=乛y补+2-n,2020/8/13,77,补补补证明,假设:|1, |1, |1 现分四种情况来证明 (1)0,0,则0 补=x, 补=y, 补=x+y 所以等式成立。,2020/8/13,78,补补补证明,(2)0,0,则0或0时,2 () 2,进位2必丢失,又因()0, 故补补补 当0时,2 () 2,又因()0, 故补补2()补 所以上式成立。,2020/8/13,79,补补补证明,(4)0,0,则0 相加两数都是负数,则其和也一定是负数。 补2,补2 补补222(2) 上式右边分为”2”和(2)两部分。

43、既然()是负数,而其绝对值又小于1,那么(2)就一定是小于2而大于1的数,进位”2”必丢失.又因()0, 所以补补2()补,2020/8/13,80,2.2.1 补码加减法,如: y=0.0111 y补=0.0111 -y补=1.1001,从右边到左边,除了第一个1和右边的0保持不变以外,其它按位取反,很重要!,2020/8/13,81,2.2.1 补码加减法,例:x=-0.1011,y=0.0111 x补=1.0101 y补=0.0111 x+y补=x补+y补=1.0101+0.0111=1.1100 x+y=-0.0100 例:x=+0.11011,y=-0.11111 x补=0.1101

44、1 y补=1.00001 -y补=0.11111 x-y补=x补+-y补=1.11010,2020/8/13,82,2.2.2 溢出的检测,溢出的检测 可能产生溢出的情况 两正数加,变负数,上溢(大于机器所能表示的最大数) 两负数加,变正数,下溢(小于机器所能表示的最小数),2020/8/13,83,2.2.2 溢出的检测,课堂作业: 例3:0.1011, 0.1001,求 例4:0.1101, 0.1011,求,2020/8/13,84,2.2.2 溢出的检测,1. 检测方法 (1) 双符号位法(参与加减运算的数采用变形补码表示) x 2x0 x补= 4+x 0 x -2 Sf1 Sf2 0

45、 0正确(正数)0 1上溢1 0下溢1 1正确(负数) Sf1 表示正确的符号,逻辑表达式为V=Sf1Sf2,可以用异或门来实现。,2020/8/13,85,2.2.2 溢出的检测,(2) 检验举例: 0.1100, 0.1000,求 0.1100, -0.1000,求 结果出现了01或10的情况就为溢出,2020/8/13,86,2.2.2 溢出的检测,2. 单符号位法 Cf C000正确(正数)01上溢10下溢11正确(负数) V=Cf C0 其中Cf为符号位产生的进位,C0为最高有效位产生。,2020/8/13,87,2.2.3 基本的加法和减法器,基本的加法和减法器 半加器HiAi B

46、i不考虑进位 全加器考虑低位进位Ci-1和向高位的进位Ci,2020/8/13,88,FA逻辑电路和框图,FA(全加器)逻辑电路图 FA框图,2020/8/13,89,一位全加器真值表,2020/8/13,90,FA逻辑方程,因为:Ci+1=,2020/8/13,91,FA逻辑方程,逻辑方程,2020/8/13,92,n位行波进位加法器,2020/8/13,93,2.3 定点乘法运算,2.3.1 定点原码乘法 2.3.2 定点补码乘法,2020/8/13,94,2.3 定点乘法运算,实现乘除法运算的方案 (1) 当使用乘除运算较多,速度要求高时,用硬件直接实现; (2) 一般情况,配置乘除法选

47、件 在现有的加法和减法器的基础上增加适当的线路及控制逻辑可以实现 用LSI和VLSI工艺实现专用的乘法器 (3) 对速度要求不高的机器,用软件实现 编制子程序(单片机等低端机器),2020/8/13,95,0 原码一位乘法,算法描述 设X原=Xs.Xn-1Xn-2XiX1X0=Xs.Xv Y原=Ys.Yn-1Yn-2YiY1Y0=Ys.Yv 则乘积XY原=Z原=Zs.Zv=(XsYs).(XvYv),2020/8/13,96,0 原码一位乘法,运算步骤 (1) 从乘数的最低位开始,用乘数B的每个二进制位去乘被乘数A,若B 的某个二进制位为1,则得位积A;如为0,则得位积0。 (2) B的各位分

48、别乘以A的所得的位积,因为位权不同,逐次向左移位,即在空间上按一定位数错开,这样逐位进行下去,直到乘数各位都乘完为止。 (3) 把经过移位对准的各次位积相加起来即得结果。,2020/8/13,97,0 原码一位乘法,缺点 (1) 将多个数一次相加,机器难以实现。一般的加法器,只能把两个输入数相加,多个位积的同时输入是无法实现的。 (2) 乘积位数增长一倍,即2n,而机器字长只有n位。 改进 (1) 把一次求和操作,变成逐步累加求部分积的操作。 (2) 将求积过程中逐位按权左移位积的操作,改为位积不动,而是上次部分积右移的操作。,2020/8/13,98,0 原码一位乘法,手算方法 例如 求A=

49、0.1101和B=0.0110的乘积 机器算法 若用Zi表示第i次部分积,则 Z0 = 0 Z1 = 2-1 (BnA + Z0) Z2 = 2-1 (Bn-1A + Z1) Zi = 2-1 (Bn-i+1A + Zi-1) Zn = 2-1 (B1A + Zn-1) Zn即为A和B的乘积,即AB=Zn,2020/8/13,99,0 原码一位乘法,例:已知X=-0.1011,Y=0.1001,求XY原 解: X原=1.1011,Y原=0.1001 |X| = 0.1011,|Y| = 0.1001 按原码一位乘法运算规则,求XY原的数值部分。 |X|Y| = 0.01100011, 而Zs

50、= XsYs = 10 =1 最后求得XY原 = 1.01100011,2020/8/13,100,例:原码一位乘法运算过程,2020/8/13,101,原码一位乘法逻辑结构原理图,2020/8/13,102,0 原码一位乘法,工作原理 (1)乘法开始时,“启动”信号使控制触发器Cx置“1”,于是开启时序脉冲T。 (2) 当乘数寄存器R1最末位为“1”时,部分积Zi和被乘数X在加法器中相加,其结果输出至R0的输入端。 (3)一旦打入控制脉冲T到来,控制信号LDR0使部分积右移一位,与此同时,R1也在控制信号LDR1作用下右移一位,且计数器i计数一次。 (4)当计数器i=n时,计数器的溢出信号使

51、触发器Cx置“0”,关闭时序脉冲T, 乘法宣告结束。 若将R0和R1连接起来,乘法结束时乘积的高n位部分在R0,低n位部分在R1,R1中原来的乘数Y由于移位而全部丢失。,2020/8/13,103,00 补码一位乘法-校正法,X 补与真值的关系 设X补 = X0 .X1X2Xn,则有设X补 = 2X0 +X 证明:当X为正时,X补 = 2X0 +X=X 当X为负时,X补 = 2+X=2X0 +X(根据定义) 由此可得: X =X补 2X0 = X0 .X1X2Xn- 2X0 =- X0+ 0 .X1X2Xn 即X为正时,X0=0,真值X=X补; X为负时,X0=1,真值X=-1+0 .X1X2

52、Xn 故可推出,当Y为负时, XY=X(-1+0 .Y1Y2Yn)=X(0 .Y1Y2Yn)-X 可以得到:XY补 = X补(0.Y1Y2Yn) + -X补,2020/8/13,104,00 补码一位乘法-校正法,校正法的思想 先将任意两个补码X补、Y补看作是一般的二进制数,仍按原码运算规则求得X补Y补,然后对其结果加以校正,而获得XY补之值。 当乘数Y为正时,与原码乘法相似,只是在部分积相加、右移操作时, 按补码性质进行;当乘数为负时,先不考虑乘数的符号,将乘数补码的数值部分与被乘数相乘;最后进行校正操作,即加上-X补。 设Y补 = Ys .Y1Y2Yn ,我们用一个公式表示补码校正法的算法

53、规则: XY补 = X补 (0.Y1Y2Yn) + -X补Ys 当Ys=0时, XY补 = X补(0.Y1Y2Yn) 当Ys=1时, XY补 = X补(0.Y1Y2Yn) + -X补,2020/8/13,105,00 补码一位乘法-比较法,布斯夫妇提出,又称Booth乘法。是对校正法的改进,不论乘数为正为负,符号位都参加运算,其运算规则统一。 假设X、Y都是用补码形式表示的机器数,X补和Y 补= YS.Y1Y2Yn,都是任意符号表示的数。求新的部分积,取决于两个比较位的数位,即Yi+1Yi的状态。,2020/8/13,106,00 补码一位乘法-比较法,布斯乘法规则 (1)设置附加位Yn+1=

54、0,部分积初值Z0 补=0。 (2)当n0时,判YnYn+1,若YnYn+1=00或11,即相邻位相同时,上次部分积右移一位,直接得部分积。 若YnYn+1=01,上次部分积加X补,右移一位得新部分积 若YnYn+1=10,上次部分积加-X补,右移一位得新部分积 (3)当n=0时,判YnYn+1 (对应于Y0Y1),运算规则同(1)只是不移位。即在运算的最后一步,乘积不再右移。,2020/8/13,107,00 补码一位乘法-比较法,例:X补=0.1001,Y补=1.1011,求XY 补 解: -X 补 = 1.0111,XY 补 = 1.11010011,2020/8/13,108,例:补码

55、乘法运算过程,2020/8/13,109,1. 定点原码乘法原理,n位乘n位积可能为2n位。 乘积的最后是所有部分积之和,有n个数相加,而FA只有两个输入端,所以需要改造: 方法一:硬件实现方法(串行的“加法和移位”),硬件 结构简单,速度太慢(时间延迟太长). 方法二:不带符号位的阵列乘法器,2020/8/13,110,1. 定点原码乘法原理,设0.1101,0.1011求x*y 部分积乘数部分积初始化为 0. 0 0 0 00 1 0 1 1 部分积右移,前面补 +X0. 1 1 0 1 乘数最低位为,加上被乘数 - 0 1 1 0 10 1 0 1 1 部分积右移,前面补 0. 0 1

56、1 01 0 1 0 1 乘数最低位为,加上被乘数 +X0 1 1 0 1 - 1 0 0 1 11 0 1 0 1 部分积右移,前面补 0 1 0 0 11 1 0 1 0 乘数最低位为,加上 +00 0 0 0 0 - 0 1 0 0 11 1 0 1 0部分积右移,前面补 0 0 1 0 01 1 1 0 1乘数最低位为,加上被乘数 +X0 1 1 0 1 - 1 0 0 0 11 1 1 0 1部分积右移,前面补 0. 1 0 0 01 1 1 1 0运算四次结束,数值部分运算,2020/8/13,111,2. 不带符号位的阵列乘法器,不带符号阵列乘法器逻辑图,2020/8/13,11

57、2,2. 不带符号位的阵列乘法器,2020/8/13,113,3. 带符号位的阵列乘法器,求补电路,2020/8/13,114,3.带符号的阵列乘法器,求补电路小结 E=0时,输入和输出相等 E=1时,则从数最右端往左边扫描,直到第一个1的时候,该位和右边各位保持不变0A=A,左边各数值位按位取反1A=乛A 可以用符号作为E 的输入 原:1.11110 补:1.00010 时间延迟分析:转换n+1位带符号的时间延迟为t=n*2T+5T,其中n*2T为或门延迟时间,5T为最高位与门和异或门的时延。,不变,左边数值位取反,2020/8/13,115,3.带符号的阵列乘法器(间接法),原码补码,20

58、20/8/13,116,举例(P36),例20:用带求补器原码乘法器(输入/出:原码) Y=(+15)*(-13) 例21:用带求补器补码乘法器(输入/出:补码) Y=(-15)*(-13),2020/8/13,117,2.4 定点除法运算,0.1 1 0 1商q 0.1 0 1 1 0.1 0 0 1 0(r0)被除数 0.0 1 0 1 121除数右移1位,减除数 0.0 0 1 1 1 0 r1得余数r1 0.0 0 1 0 1 1 22除数右移1位,减除数 0.0 0 0 0 1 1 0 r2得余数r2 0.0 0 0 1 0 1 1 23除数右移1位,不减除数 0.0 0 0 0 1

59、 1 0 0 r3得余数r3 0.0 0 0 0 1 0 1 1 24除数右移1位,减除数 0.0 0 0 0 0 0 0 1 r4得余数r4,1. 定点原码一位除法实现方案 ,2020/8/13,118,定点原码除法的流程图,R0 0 ?,第,8,次循环?,3a.,商,1,3b. R0 + R2,R0,商,0,4. R0, R1,左移,1. R0, R1,左移,商,0,2. R0,-,R2,R0,5. R0,右移,Y,N,N,Y,R0,R1被除数/余数,商 R2除数 最后一步余数是负数, 需要修正再加上除数.,2020/8/13,119,2. 不恢复余数的除法,加减交替法(不恢复余数法) 当

60、i-1次求商的余数为正时,下一次求商的办法是 Ri=2Ri-Y 若Ri0时,则I位上商0,而恢复余数作加法Ri+Y,下一次即I+1次求商作减法时Ri+1=2(Ri+Y)-Y=2Ri+Y 上述式子表明,当某一次商差为负时,本次商0,继续求下一位商不必恢复余数,而直接将商的差值左移动一位,在加Y的办法得到。,2020/8/13,120,2. 不恢复余数的除法,法则 余数为正,商1,求下一位商的办法是余数左移,减除数 余数为负,商0,求下一位商的办法是余数左移,加除数 若最后余数与被除数X异号,则需要纠余,增加如下操作: 若X、Y同号,用+Y纠余; 若X、Y异号,用-Y纠余。 例:x=0.1011

61、y=0.1101 求x/y x补=001011 y补=001101 -y补= 。,2020/8/13,121,001011 00000 开始 110011 -y 111110 00000 为负,商0 111100 00000 左移一位 001101 + y 001001 00001 为正,商1 010010 00010 左移一位 110011 -y 000101 00011 为正,商1 001010 00110 左移一位 110011 -y 111101 00110 为负,商0 111010 01100 左移一位 001101 + y 000111 01101 为正,商1,被除数,商,说明,2

62、020/8/13,122,2. 不恢复余数的除法,则x/y=0.1101余数为0.0111*2-4(左移了4次) 小结 判断溢出/”0”。 商的符号由被除数的符号和除数的符号共同决定。 被除数的位数可以是除数位数的两倍,地位开始放于商的寄存器中。 最后一步余数是负数,需要修正再加上除数,移位.直到为正。,2020/8/13,123,可控的加法/减法单元CAS单元 P=0,作加法运算 P=1,作减法运算,2020/8/13,124,x/y 除数右移代替部分积左移 商Q=0.q3q2q1 余数R=0.00r6r5r4r3,2020/8/13,125,例23(p44) 0.101001, 0.111, 求。 解:补1.001 除数右移 被除数0.1 0 1 0 0 1减1.0 0 1 余数为负1.1 1 0 0 0 1 0q00加0.0 1 1 1 余数为正0.0 0 1 1 0 1 0q11减1.1 1 0

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!