计算机组成原理(华科版)第二章运算方法与运算器.ppt

上传人:小飞机 文档编号:6023913 上传时间:2023-09-15 格式:PPT 页数:120 大小:447.50KB
返回 下载 相关 举报
计算机组成原理(华科版)第二章运算方法与运算器.ppt_第1页
第1页 / 共120页
计算机组成原理(华科版)第二章运算方法与运算器.ppt_第2页
第2页 / 共120页
计算机组成原理(华科版)第二章运算方法与运算器.ppt_第3页
第3页 / 共120页
计算机组成原理(华科版)第二章运算方法与运算器.ppt_第4页
第4页 / 共120页
计算机组成原理(华科版)第二章运算方法与运算器.ppt_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《计算机组成原理(华科版)第二章运算方法与运算器.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理(华科版)第二章运算方法与运算器.ppt(120页珍藏版)》请在三一办公上搜索。

1、第二章 运算方法与运算器,2.1 数据信息的表示方法2.1.1数值数据的表示,真值与机器数,采用正、负符号加上二进制的绝对值,则这种数值称为真值。将正负号分别用一位数码0和1来代替,一般将这种符号位放在数的最高位。这种在机器中使用的连同数符一起数码化的数,称为机器数。,真值与机器数,例:设机器字为8b字长,数N1的真值为(+1001110)2,数N2的真值为(-1001110)2,则N1、N2对应的机器数为:N1 0 1 0 0 1 1 1 0 N2 1 1 0 0 1 1 1 0 符号 数 值 部 分,数的转换例2-1 将十进制数26.41转换成二进制数,八进制数、十六进制数。解:转换成二进

2、制数的过程如下,整数除2取余(余数)(整数)小数乘2取整。26.4113 0 0.826 1 1.643 0 1.281 1 0.560 1 1.12 26.4110=1 1 0 1 0.0 1 1 0 12,数的机器码表示通常有原码、补码、反码和移码四种表示法。原码表示法 其最高位作为符号位,用“0”表示正号,用“1”表示负号,有效值部分用二进制的绝对值表示。例如,若x1=+0.1011 x2=-0.1011,字长为8b,则其原码分别为:x1原=0.1011000 x2原=1.1011000原码有正零和负零两种形式:+0原=0.00 00-0原=1.00 00,补码表示法,由于补码在作二进制

3、加、减运算时较方便,所以在计算机中广泛采用补码表示二进制数。补码运算中,可以用加法代替减法,节省元件,降低成本。,补码表示法,原码求补码方法:正数不变(相同)。负数符号位不变,数值位求反加1例如,若x1=+0.1011,x2=-0.1011,字长为8b,则其补码分别为x1原=0.1011000 x1补=0.1011000 x2原=1.1011000 x2补=1.0101000补码的零只有一个即0.0000000。1.000000表示负1,反码表示法,对于正数来说,反码与原码、补码的表示形式相同。对于负数来说,符号位与原码、补码的符号位定义相同。而数值只是将原码的数值位按位变反就得到了该数的反码

4、表示。例如,若x1=+0.1011 x2=-0.1011,字长为8b,x1反=0.1011000=x1原=x1补x2反=1.0100111 x2补=1.0101000 x2原=1.1011000反码的零有两个0.0000和1.11111,移码,移码也叫增码,它常以整数形式用在计算机浮点数的阶码(表示指数)中。若纯整数X为n位(包括符号位),则其移码定义为:x移=2n-1+x补-2n-1X2n-1-1补码将符号位求反可得移码。设字长为8b,若x=+1000(2),x补=00001000 x移=10001000 若x=-1000(2),x补=11111000 x移=01111000,数的定点表示,

5、计算机中小数的小数点并不是用某个数字来表示的,而是用隐含的小数点的位置来表示。根据小数点的位置是否固定,又可分为定点表示和浮点表示。其中定点表示形式又分为定点小数表示形式和定点整数表示形式。,数的定点表示,定点小数 将小数点固定在符号位d0之后,数值最高位d-1之前,这就是定点小数形式。其格式如下所示:d0 d-1 d-2 d-(n-1)定点整数 将小数点固定在数的最低位之后,这就是定点整数形式。其格式如下所示:d0 d-1 d-2.d-(n-1),定点小数的表示范围:设字长为8b,用原码表示时,其表示范围如下:最小负数 最大负数 最小正数 最大正数 1.1111111 1.0000001 0

6、.0000001 0.1111111-(1-2)-27 27 1-27 设字长为8b,用补码表示时,其表示范围如下:最小负数 最大负数 最小正数 最大正数 1.0000000 1.1111111 0.0000001 0.1111111-1-27 27 1-27,定点整数的表示范围:设字长为8b,用原码表示时,其表示范围如下:最小负数 最大负数 最小正数 最大正数 11111111 10000001 00000001 01111111-(27-1)=-127-1+1 27-1=127 设字长为8b,用补码表示时,其表示范围如下:最小负数 最大负数 最小正数 最大正数 10000000 11111

7、111 00000001 01111111-27=-128-1+1 27-1=127,(1)综上所述,用原码表示时,由于真值零占用了两个编码,因此n位二进制只能表示2n-1个原码。原码表示的优点是:数的真值与它的原码之间的对应关系简单、直观、转换容易,但用原码实现加减运算很不方便。(2)在补码系统中,由于零有唯一的编码,因此,n位二进制能表示2n个补码,采用补码表示比用原码表示可多表示一个数。补码在机器中常用于作加、减运算。,数的浮点表示法,浮点数的表示格式 浮点表示法把字长分成阶码(表示指数)和尾数(表示数值)两部分。其格式如下(第一种浮点格式):J Em-1E1 S D-1D-(n-1)阶

8、符 阶码值 数符 尾数值 补码表示 补码表示 阶码部分共分为m位,其中J为阶符(即指数部分的符号位),Ei为阶码值(表示幂次);基数R是隐含约定的,通常取2;尾数部分共分为n位,其中S是尾数部分的符号位,D-1D-(n-1)为尾数值部分。假设阶码为E,尾数为D,基数为2,则这种格式存储的数X可表示为X=D2E。,实际应用中,阶码通常采用补码或移码定点整数形式,尾数通常用补码定点小数形式。浮点表示法还有另一种(即第二种浮点格式)表示格式,将数符放在最高位,即 S J Em-1E1 D-1D-(n-1)数符 阶符 阶码值 尾数值 移码表示 补码表示,浮点数的规格化,为了使浮点表示法有尽可能高的精度

9、,措施之一是增加位数或者是在字长一定的情况下,将阶码和尾数所占的位数协调好;措施之二是采用浮点数规格化表示。那么什么是浮点数规格化呢?这就是通过调整阶码,使其尾数D满足下面形式的数:原码规格化后 正数为 0.1的形式。负数为 1.1的形式。补码规格化后 正数为 0.1的形式。负数为 1.0的形式。,浮点数的表示举例,某机用32b表示一个数,阶码部分占8b(含一位符号位),尾数部分占24b(含一位符号位)。设x1=-256.5,x2=127/256,试写出x1和x2的两种浮点数表示格式。解:x1=-256.5=-(100000000.1)2=-290.1000000001 阶码的补码为(+9)补

10、=00001001 阶码的移码为(+9)移=10001001 第一种浮点表示的格式为 第二种浮点表示的格式为,浮点数的表示举例,某机用32b表示一个数,阶码部分占8b(含一位符号位),尾数部分占24b(含一位符号位)。设x1=-256.5,x2=127/256,试写出x1和x2的两种浮点数表示格式。解 x2=127/256=(1111111)22-8=2-10.1111111 阶码的补码为(-1)补=11111111 阶码的移码为(-1)移=01111111 第一种浮点表示的格式为 第二种浮点表示的格式为,浮点数的表示范围,设阶码和尾数各为4b(各包含一个符号位),则其浮点数的表示表示范围分别

11、为:阶码范围 最小负数 最大负数 最小正数 最大正数 1000 1111 0001 0111-27=-8-1+1 23-1=7 规格化尾数表示范围 最小负数 最大负数 最小正数 最大正数 1.000 1.011 0.100 0.111-1-(23+21)21 1-23,规格化浮点数表示范围,最小负数 最大负数 最小正数 最大正数 201111.000 210001.011 210000.100 201110.111 211111.000 200001.011 200000.100 211110.111-271-2-8(23+21)2-821 27(1-23)注意:这里规格化尾数的最大负数的补码

12、是1.011的形式,而不是1.100的形式,是因为 1.100不是规格化数,所以规格化尾数的最大负数应是:-(0.100+0.001)=-0.1001,而-0.101补=1.011,即-(2(n-1)+21),(5)溢出问题,定点形式判断溢出的办法是对数值本身进行判断,而浮点数是对规格化后的阶码进行判断。当一个浮点数阶码大于机器的最大阶码,称为上溢;而小于最小阶码时,称为下溢。机器产生上溢时,不能再继续运算,一般要进行中断处理。出现下溢时,一般规定把浮点数各位强迫为零(当做零处理),机器仍可继续进行运算。,字符的表示,ASCII码(American Standard Code For Info

13、rmation Interchange,美国国家信息交换标准字符码)。ASCII共有128个字符,其中95个编码(包括大小写各26个英文字母,(09)10个数字符,标点符号等)对应着计算机终端能敲入并可以显示这95个字符,打印机也可打印出这95个字符。另外的33个字符是被用做控制码,控制计算机某些外围设备的工作特性和某些计算机软件运行情况。,ASCII码,在计算机中,用1B(一个字节)表示一个ASCII码,其最高一位(b7位)填0,余下的7b可以给出128个编码,表示128个不同的字符和控制码。但当进行奇偶校验时,也可以用最高位(b7)作为校验位。如A的ASCII码为:1000001=0100

14、0001=(41)16=65 如a的ASCII码为:1100001=01100001=(61)16=97,汉字的表示,(1)汉字的输入 输入码是为使输入设备能将汉字输入到计算机而专门编制的一种代码。目前已出现了数百种汉字输入方案,常见的有国标码、区位码、拼音码和五笔字型等。(2)汉字在机内的表示 机内码是指机器内部处理和存储汉字的一种代码。目前国内还没有制定统一的汉字机内码,常用的一种汉字机内码是用2B表示一个汉字的。它是在国标码的基础上,在每个字节的最高位置“1”作为汉字标记而组成的。机内码与国标之间的转换关系为:机内码(十六进制)国标码(十六进制)8080H。例如,“京”字的国标码为3E2

15、9H,其机内码为BEA9H。,(3)汉字的输出与汉字字库,显示器是采用图形方式(即汉字是由点阵组成)来显示汉字的。但由于汉字字形复杂,用显示西文字符的88点阵已无法显示一些常用的汉字,每个汉字至少需要1616的点阵才能显示。图2.1所示的是用1616点阵显示一个汉字的例子。对于这种1616点阵码,每个汉字要用32B的容量,它是最简单的汉字点阵。若要获得更美观的字形,需采用2424,3232,4848等点阵来表示。一个实用的汉字系统大约占几十万到上百万个存储单元。,一般常用的汉字输出有打印输出和显示输出两种形式。输出汉字的过程为:输入码转换为机内码,然后用机码检索字库,找到其字形点阵码,再输出汉

16、字,,键盘 输入码处理 汉字机内码 字形 汉字字形点阵 显示 转换程序 2B 检索程序 32B 驱动程序 码表 汉字 CRT 字模库 显示器,2.2 定点加减法运算2.2.1 定点补码加、减法与溢出概念,在计算机中,常将数值转换成补码后再进行加减运算。其优点是,可将减法运算转化为加法运算,这样可以简化机器内部硬件电路的结构。补码运算的特点是,符号位和数值位一起参加运算。,补码加减运算规则,(1)补码的加法运算其公式为:x补y补xy补(2)补码的减法运算其公式为x 补-y 补=x-y 补=x+(-y)补=x 补+-y 补,只要能通过y 补求得-y 补,就可以将补码减法运算化为补码加法运算。已知y

17、 补,求-y 补的法则是:对y 补各位(包括符号位)取反,然后在末位加上1。例如,已知y 补=11010 则-y 补=00110又如,已知y 补=01110 则-y 补=10010,加减法运算规则参加运算的数都用补码表示。数据的符号与数据一样参加运算。求差时将减数求补,用求和代替求差。运算结果为补码。如果符号位为0,表明运算结果为正;如果符号位为1,则表明运算结果为负。符号位的进位为模值,应该丢掉。,2.补码加减运算举例,例1:已知机器字长 n=8b,x=44,y=53,求x+y=?解:x=00101100,y=00110101 x 补=00101100,y 补=00110101 x 补=00

18、101100+y 补=00110101 x+y 补=01100001(x+y)2=+1100001 x+y=97,2.补码加减运算举例,例2 已知机器字长 n=8b,x=-44,y=-53,求x-y=?解:x=-00101100,y=-00110101 x 补=11010100,y 补=11001011-y 补=00110101 x 补=11010100+-y 补=00110101 x-y 补=1 00001001 已超出模值,丢掉(x-y)2=+0001001 x-y=+9,3.溢出判断法,例如:已知机器字长 n=8b,x=120,y=10,求x+y=?解:x=+1111000 y=+000

19、01010 x 补=01111000 y 补=00001010 x 补=01111000+y 补=00001010 x+y 补=10000010 运算结果符号与被加数符号相反,故产生了溢出。判断溢出的方法是:两个符号相同的数相加,其运算结果的符号应与被加数符号、加数符号相同,如相反就产生了溢出现象;两个符号相异的数相减,其运算结果的符号应与被减数的符号相同,如相反则有溢出发生。,(1)双符号法(变形补码法),用两个相同的符号位表示一个数的符号。左边第一位为第一符号位Sf1,相邻的为第二符号位Sf2。双符号位的含义为:00表示正号;01表示产生正向溢出;11表示负号;10表示产生负向溢出。双符号

20、位可用逻辑异或来判断溢出情况:V=Sf1Sf2,若V=0,则无溢出;V=1,则有溢出。即:运算结果的两个符号位相同,则没有溢出发生;运算结果的两个符号位不同,则发生了溢出,第一符号位永远是结果的真正符号位。,例1:已知 x=0.1011,y=0.0111,求x+y=?解:x 补=00.1011,y 补=00.0111 x 补=00.1011+y 补=00.0111 x+y 补=01.0010 两符号位为01,表示出现正向溢出。例2:已知 x=-0.1011,y=0.0111,求x-y=?解:x 补=11.0101,-y 补=11.1001 x 补=11.0101+-y 补=11.1001 x-

21、y 补=1 10.1110 已超出模值,丢掉 两符号位为10,表示出现负向溢出。,进位判断法,当两个单符号位的补码进行加减运算时,若最高数值位向符号位的进位值C与符号位产生的进位输出值S 相同,则没有溢出发生。如果两个进位值不同,则有溢出发生。其判断溢出表达式如下:V=SC例如:x 补=1.0101+y 补=1.1001 x+y 补=1 0.1110 最高有效位没有进位,即C=0,符号位有进位,即S=1,故V=10=1,有溢出发生。x 补=1.1101+y 补=0.1001 x+y 补=1 0.0110 最高有效位有进位,即C=1,符号位有进位,即S=1,故V=11=0,无溢出发生,x+y=+

22、0.0110。,2.2.2 基本的二进制加、减法器,(1)一位全加器设x和y两个操作数分别为 xxf.xxx n,yyf.yyYn表25 一位全加器真值表Xi yi Ci-1 Si Ci 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1,根据以上真值表可分别写出Si和Ci的如下表达式:Si=xi yi Ci-1+xi yi Ci-1+xi yi Ci-1+xi yi Ci-1=xi+yi+Ci-1 Ci=xi yi Ci-1+xi yi Ci-1+xi yi Ci-1+xi yi Ci

23、-1=xiyi+(xi+yi)Ci-1 以上两式用“异或”门构成一位全加器,,串行进位的并行加法器 当操作数为n1位长时,需要用n1位全加器构成加法器,真正的结果依赖于进位信号的逐位产生。加法器求和的时间是进位信号的产生和传递所占用的时间。,人们把xiyi称为进位传递函数或进位传递条件,并以Pi表示。而将xiyi称为进位产生函数或本地进位,并以Gi表示。所以,进位表达式又常表示为 Ci=xiyi+(xiyi)Ci-1=Gi+Pi Ci-1 串行进位链的表达式为:C1=x1y1+(x1y1)C0=G1+P1 C0 C2=x2y2+(x2y2)C1=G2+P2 C1 C3=x3y3+(x3y3)C

24、2=G3+P3 C2 Cn-1=xn-1y n-1+(x n-1y n-1)C n-2=G n-1+P n-1 C n-2 Cn=xny n+(x ny n)C n-1=G n+P n C n-1 从这组表达式中可以明显地看到,某位的进位信号的产生,依赖于低位进位信号的产生。要提高加法器的运算速度,就必须解决进位信号的产生和传递问题。,(2)并行进位的并行加法器 上式可以改写成如下形式:C1=G1+P1 C0 C2=G2+P2 C1=G2+P2(G1+P1C0)=G2+P2G1+P2P1C0 C3=G3+P3 C2=G3+P3(G2+P2C1)=G3+P3G2+P3P2G1+P3P2P1C0

25、以此类推,C4=G4+P4 C3=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0 Cn-1=G n-1+P n-1G n-2+P n-1P n-2G n-3+P n-1P n-2P n-3P4P3P2G1+P n-1P n-2P n-3P4P3P2P1C0 Cn=G n+P nG n-1+P nP n-1G n-2+P nP n-1P n-2P4P3P2G1+P nP n-1P n-2P4P3P2P1C0 各进位信号的产生不再与低位的进位信号有关,而只与两个参加运算的数和C0有关。,组内并行、组间串行的进位链 这种进位链也称为单重分组跳跃进位。以16b加法器为例,一般可分

26、作4 个小组,每小级4位,每组内部采用并行进位结构,组间采用串行进位传递结构。这里以最低4b(第4b第1b)这一小组为例进行讨论。它们各位的进位表达式为 C1=G1+P1 C0 C2=G2+P2G1+P2P1C0 C3=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0在这个小组里,来自低位的进位信号只有C0,由它送到高位小组的进位信号只需送出C4即可。从这组表达式可得,这个小组组内的并行进位14)。线路(见图2.图中用虚线围起来的部分可看成是一个逻辑网络,如图2.15所示。,组内并行、组间并行的进位链 这种进位链又称为多

27、重分组跳跃进位链。仿照分析每一位进位信号的方法,将每个小组最高位的进位信号分成进位传送函数和进位生成函数两个部分:C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0 其中P4P3P2P1为小组的传送函数,记作Pi*。而前面4项与C0无关,只与本小组内的Gi、Pi有关,所以称它们为第一小组的进位生成函数,记作Gi*,即 G1*=G4+P4G3+P4P3G2+P4P3P2G1 P1*=P4P3P2P1 因此 C4=G1*+P1*C0 同理 C8=G2*+P2*C4 C12=G3*+P3*C8 C16=G4*+P4*C12*,这是一组递推表达式,可将其展开为 C4=G1*+P

28、1*C0 C8=G2*+P2*G1*+P2*P1*C0 C12=G3*+P3*G2*+P3*P2*G1*+P3*P2*P1*C0 C16=G4*+P4*G3*+P4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*C0 用逻辑电路实现展开后的表达式,就可以构成组间并行的进位线路,即第二重分组并行进位线路。组内采用并行进位,组间也采用并行进位时,每个小组应产生本小组的进位生成函数Gi*和本小组的进位传递函数Pi*,以作为组间并行进位网络的输入变量,所以,小组内的并行进位线路应作适当的修改,即:第一小组应产生G1*、P1*、C1、C2、C3,而不在小组内产生C4。第二小组应产生G2

29、*、P2*、C5、C6、C7,而不在小组内产生C8。第三小组应产生G3*、P3*、C9、C10、C11,而不在小组内产生C12。第四小组应产生G4*、P4*、C13、C14、C15,而不在小组内产生C16。,各小组的进位生成函数和进位传递函数的逻辑表达式为 G1*=G4+P4G3+P4P3G2+P4P3P2G1 G2*=G8+P8G7+P8P7G6+P8P7P6G5 G3*=G12+P12G11+P12P11G10+P12P11P10G9 G4*=G16+P16G15+P16P15G14+P16P15P14G13 P1*=P4P3P2P1 P2*=P8P7P6P5 P3*=P12P11P10P

30、9 P4*=P16P15P14P13 作如上修改后,仍以第一小组为例,组内的逻辑电路如图所示。,3.用集成电路构成ALU的原理,常见的产品有SN74181,它是4b片形的芯片,即一片能完成4 b数的算术运算和逻辑运算。还有8b、16b片的ALU芯片。下面先介绍SN74181芯片,然后讨论如何用它构成ALU。(1)SN74181芯片 SN74181是一种具有并行进位的多功能ALU芯片,每片4b,构成一组,组内是并行进位,其芯片方框图如图2.19所示。,(2)利用SN74181芯片构成16b ALU的原理,SN74181的结构很适合于将它们连成不同位数的ALU,每片SN74181芯片作为一个4b的

31、小组,由于芯片给出了Cn+4、Pi*和Gi*,所以用该芯片既可构成组间串行进位的ALU,也可以构成组间并行的ALU。组间串行进位的16b ALU的构成,组间并行进位的16b ALU的构成,需增加一片SN74182芯片。SN74182与SN74181 配套的产品,是一个产生并行进位信号的部件。由于SN74181 提供了小组的进位传递函数Pi*和进位生成函数Gi*,SN74182可以利用它们作输入参数,以并行的方式给出每个小组(芯片)的最高位进位信号。SN74182在这里的用途是作为第2级并行进位系统。SN74182的逻辑框图如图2.21所示。,2.3 移位运算,移位运算是计算机中非常重要的基本运

32、算之一,计算机中移位运算和加减运算相结合可实现乘除运算。移位运算分逻辑移位、算术移位和循环移位三大类。,2.3.1 逻辑移位,无符号数的移位称为逻辑移位。逻辑移位规则为:(1)逻辑左移时将寄存器的每一位数据向左移动一个位置,最低位补0,最高位移至进位位。(2)逻辑右移时将寄存器的每一位数据向右移动一个位置,最低位移至进位位,最高位补0。(3)不论是定点整数还是定点小数,逻辑左移相当于将原数值乘以2,而逻辑右移相当于将原数值除以2。,2.3.2 算术移位,有符号数的移位称为算术移位。算术移位时需考虑正、负数及不同编码对应的规则,表2-7给出了三种不同码制的移位规则。,2.3.3 循环移位规则,小

33、循环移位 小循环左移:最高位移至进位位,同时移至最低位。,小循环右移:最低位移至进位位,同时移至最高位。,大循环移位 大循环左移:最高位移至进位位,进位位移至最低位。,大循环右移:最低位移至进位位,进位位移至最高位。,2.3.1 原码一位乘法,1.人工计算乘法例:求A=0.1101 B=0.1011两数乘积 0.1101 0.1011 1101 A20 不移位 1101 A21 左移1位 0000 A22 左移2位 1101 A23 左移3位 0.10001111,2.计算机实现乘法运算,AB=A(0.1011)=0.1A+0.00A+0.001A+0.0001A=0.1A+0.00A+0.0

34、01(A+0.1A)=0.1A+0.010A+0.1(A+0.1A)=0.1A+0.10A+0.1(A+0.1A)=2-1A+2-10A+2-1(A+2-1A)=2-1A+2-10A+2-1(A+2-1(A+0)将乘法变成加法和右移的结合。,3原码一位乘法的运算规则,设 xxf.xx x n,yyf.yy y n,乘积为P,乘积的符号位为Pf,则有 Pf=xfyf,|P|=|x|.|y|求|P|的运算规则为:(1)被乘数和乘数均取绝对值参加运算,符号位单独考虑。(2)被乘数取双符号,部分积的长度与被乘数的长度相同,初值为0。(3)从乘数的最低位的yn位开始对乘数进行判断,若yn=1,则部分积加

35、上被乘数|x|,然后右移一位;若yn=0,则部分积加上0,然后右移一位。(4)重复(3)判断n次。,例1 x=-0.1101,y=-0.1011,求:xy原=?解:|x|=00.1101(用双符号表示)|y|=0.1011(用单符号表示)部分积 乘数 yn 说 明 00.0000 0.1011+00.1101 yn=1,加|x|00.1101 00.01101 0.101 右移一位得 P1+00.1101 yn=1,加|x|01.00111 00.100111 0.10 右移一位得 P2+00.0000 yn=0,加0 00.100111 00.0100111 0.1 右移一位得 P3+00.

36、1101 yn=1,加|x|01.0001111 00.10001111 0 右移一位得 P4由于 Pf=xfyf=11=0,|P|=|x|.|y|=0.10001111 所以 xy原=0.10001111,2.3.2 补码一位乘法,1.补码一位乘法的运算规则1)符号位参与运算,运算的数均以补码表示。2)被乘数一般取双符号位参加运算,部分积初值为0。3)乘数可取单符号位,以决定最后一步是否需要校正,即是否要加-x补。4)乘数末位增设附加位y n+1,且初值为0。(5)按表2.2所示进行操作。(6)按照上述算法进行n+1步操作,但第n+1步不再移位,仅根据y0与y1的比较结果作相应的运算即可。,

37、表22 补码一位乘法算法 yn(高位)yn+1(低位)操 作 1 0 部分积右移一位 1 1 部分积加 x补,右移一位 1 0 部分积加-x补,右移一位 1 1 部分积右移一位,例2 x=-0.1101,y=0.1011,求:xy补=?解:x补=11.0011,-x补=00.1101(用双符号表示)y补=0.1011(用单符号表示)部分积 乘数ynyn+1 说 明 00.0000 0.10110+00.1101 ynyn+1=10,加-x补 00.1101 00.01101 0.1011 右移一位得 P1 00.001101 0.101 ynyn+1=11,右移一位得 P2+11.0011 y

38、nyn+1=01,加x补 11.011001 11.1011001 0.10 右移一位得 P3+00.1101 ynyn+1=10 加-x补 00.1000001 00.01000001 0.1 右移一位得 P4+11.0011 ynyn+1=01,加x补 11.01110001 最后一步不移位 即xy补=1.01110001,2.3.3 原码两位乘法,为了提高乘法的执行速度,可以考虑每次对乘数的两位进行判断以确定相应的操作,这就是两位乘法。原码两位乘法的运算规则为:(1)符号位不参加运算,最后的符号Pf=xfyf。(2)部分积与被乘数均采用三位符号,乘数末位增加一位C,其初值为0。(3)按表

39、2.3所示的操作。(4)若尾数n为偶数,则乘数用双符号,最后一步不移位。若尾数n为奇数,则乘数用单符号,最后一步移一位。,表23 原码两位乘法算法,Yn-1 yn C 操 作 0 0 0 加0,右移两位,0C 0 0 1 加x,右移两位,0C 0 1 0 加x,右移两位,0C 0 1 1 加2x,右移两位,0C 1 0 0 加2x,右移两位,0C 1 0 1 减x,右移两位,1C 1 1 0 减x,右移两位,1C 1 1 1 加0,右移两位,1C,例4 x=-0.1101,y=0.0110,求xy原=?解:|x|=000.1101 2|x|=001.1010(用三符号表示)|y|=00.011

40、0(用双符号表示)部分积 乘数 C 说 明 000.0000 00.01100+001.1010 yn-1ynC=100,加2|x|001.1010 000.011010 00.011 右移两位 0C+001.1010 yn-1ynC=011,加2|x|010.000010 000.10000010 00.0 右移两位 0C yn-1ynC=000,最后一步不移位 故xy原=0.10000010,2.4 定点除法运算2.4.1 原码一位除法,两个用原码表示的数相除时,商的符号通过两个数的符号异或求得,而商的数值部分通过两个数的数值部分按正数求商得到。设被除数x原xf.xx x n,除数y 原y

41、f.yy y n,则商的符号:Qf=xfyf商的数值:|Q|=|x|/|y|,求|Q|的加减交替法(不恢复余数法)运算规则为:,(1)符号位不参加运算,并要求|x|y|(2)先用被除数减去除数,当余数为正时,商上1,余数左移一位,再减去除数。当余数为负时,商上0,余数左移一位,再加上除数。(3)当第n+1步余数为负时需加上|y|得到第n+1步正确的余数,最后余数为rn2-n(余数与被除数同号)。原码不恢复余数法算法流程图如图28所示。,例1 x=-0.1001,y=-0.1011,求x/y原=?解:|x|=00.1001,|y|=00.1011-|y|补=11.0101 被除数x/余数r 商数

42、q 说 明 001001+-|y|补 11.0101 减去除数 111110 0 余数为负,商上0 111100 0 r和q左移一位+|y|补 00.1011 加上除数 000111 0.1 余数为正,商上1 001110 0.1 r和q左移一位+-|y|补 11.0101 减去除数 000011 0.11 余数为正,商上1 000110 0.11 r和q左移一位+-|y|补 11.0101 减去除数 111011 0.110 余数为负,商上0 110110 0.110 r和q左移一位+|y|补 00.1011 加上除数 000001 0.1101 余数为正,商上1,Qf=xf+yf=1+1=

43、0,x/y原=0.1101,余数r原=1.00012-4(余数与被除数同号)。,原码不恢复余数法的硬件逻辑框图,其中寄存器R0在除法开始前存放被除数,运算过程中存放余数。每次获得的商是在余数加上或减去除数后由加法器的状态来定的。商存放在R1中,R0与R1都具有左移功能,上商位固定在q n位进行。在运算过程中,经n+1步获得n+1位商,其中n为有效位数,首先获得的一位商一般为0,最后由xfyf的值来填充以决定商的符号,在逻辑上商的符号由“异或”门实现。q n的状态用来控制是进行加y还是减y,当q n=1时,除数求补,以-y补的形式送入加法器,进行减y运算;当q n=0时,除数以y的形式送入加法器

44、,进行加y运算。,2.4.2 补码一位除法,1.补码不恢复余数法的算法规则如下:符号位参加运算,除数与被除数均用双符号补码表示。被除数与除数同号时,被除数减去除数。被除数与除数异号时,被除数加上除数。商符号位的取值见第步。余数与除数同号时,商上1,余数左移一位减去除数;余数与除数异号时,商上0,余数左移一位加上除数。注意:余数左移加上或减去除数后就得到了新余数。采用校正法包括符号位在内,应重复规则(n1)次。,商的校正原则:,当刚好能除尽(即运算过程中任一步余数为0)时,如果除数为正,则商不必校正;若除数为负,则商需要校正,即加2-n进行修正。当不能除尽时,如果商为正,则不必校正;若商为负,则

45、商需要加2-n进行修正。求得n位商后,得到的余数往往是不正确的。正确的余数常需要根据具体情况作适当的处理才能获得,处理方法一般如下:,余数的处理,若商为正,则当余数与被除数异号时,应将余数加上除数进行修正才能获得正确的余数。若商为负,则当余数与被除数异号时,余数需要减去除数进行校正。余数之所以需校正,是因为在补码不恢复余数除法运算过程中先比较后上商的缘故。可见,如果要保存余数必须根据具体情况对余数作相应处理,否则余数不一定正确。,例3 x=0.1001,y=-0.1001,求x/y补=?解:x补=0.1001,y补=11.0111,-y补=00.1001(用双符号表示)被除数x/余数r 商数q

46、 说 明 001001+y补 11.0111 x和y异号,x补+y补 000000 0 余数与 y异号,商上0 000000 0 r和q左移一位+y补 11.0111 加上除数 110111 0.1 余数与 y同号,商上1 101110 0.1 r和q左移一位+-y补 00.1001 减去除数 110111 0.11 余数与 y同号,商上1 101110 0.11 r和q左移一位+-y补 00.1001 减去除数 110111 0.111 余数与 y同号,商上1 101110 0.111 r和q左移一位+-y补 00.1001 减去除数 110111 01111 余数与 y同号,商上1,中间有

47、一步余数为零表示能除尽,除数为负,需校正,x/y补=11111+00001=10000 余数与被除数异号,需校正,余数r补=(110111+00.1001)2-4=0.00002-4。,例3 x=-0.1001,y=0.1011,求x/y补=?解:x补=11.0111 y补=00.1011,-y补=11.0101(用双符号表示)被除数x/余数r 商数q 说 明 110111+y补 00.1011 x和y异号,x补+y补 000010 1 余数与 y同号,商上1 000100 1 r和q左移一位+-y补 11.0101 减去除数 111001 1.0 余数与 y异号,商上0 110010 1.0

48、 r和q左移一位+y补 00.1011 加上除数 111101 1.00 余数与 y异号,商上0 111010 1.00 r和q左移一位+y补 00.1011 加上除数 000101 1.001 余数与 y同号,商上1 001010 1.001 r和q左移一位+-y补 11.0101 减去除数 111111 1.0010 余数与 y异号,商上0,不能除尽,商为负,需校正,x/y补=10010+00001=10011 余数与被除数同号不需校正,余数r补=111112-4(余数与被除数同号)。,2.5 定点运算器的组成与结构,ALU(Arithmetic Logic Unit)运算器是对数据进行加

49、工处理的部件,它的具体任务是实现数据的算术运算和逻辑运算,所以它又称为算术逻辑运算部件,简记为ALU(Arithmetic Logic Unit)。,2.5.1 多功能算术逻辑运算单元(ALU),(1)一位全加器设x和y两个操作数分别为 xxf.xxx n,yyf.yyYn表25 一位全加器真值表Xi yi Ci-1 Si Ci 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1,根据以上真值表可分别写出Si和Ci的如下表达式:Si=xi yi Ci-1+xi yi Ci-1+xi yi

50、 Ci-1+xi yi Ci-1=xi+yi+Ci-1 Ci=xi yi Ci-1+xi yi Ci-1+xi yi Ci-1+xi yi Ci-1=xiyi+(xi+yi)Ci-1 以上两式用“异或”门构成一位全加器,如图2.11所示,它的逻辑符号如图2.12所示 2.并行加法器及其进位链 并行加法器使用的全加器的位数与操作数的位数相同,它能够同时对操作数的各位进行相加,所以,称为并行加法器。这里将进位信号的产生与传递的逻辑结构称为进位链。(1)串行进位的并行加法器 当操作数为n1位长时,需要用n1位全加器构成加法器,如图2.13所示。真正的结果依赖于进位信号的逐位产生。加法器求和的时间是进

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号