第17次课第3章数值运算及运算器精.ppt
第第17次次课第第3章数章数值运算及运运算及运算器算器第1页,本讲稿共28页第二部分:第3章 数值运算及运算器1、逻辑移位三、移位运算n 按操作性质可分为三种类型:逻辑移位、循环移位、算术移位。只有数码位置的变化,而无数量的变化。左移:低位补0。右移:高位补0。例1:A寄存器的初值为 10110101 逻辑右移一位后为 01011010 逻辑左移一位后为 01101010第2页,本讲稿共28页第二部分:第3章 数值运算及运算器2、循环移位三、移位运算 寄存器两端触发器有移位通路,形成闭合的移位环路。例例2 2:A A寄存器的初值为寄存器的初值为 1001100110011001循环右移一位后为 11001100循环左移一位后为 00110011第3页,本讲稿共28页第二部分:第3章 数值运算及运算器3、算术移位三、移位运算数的符号不变,而数值发生变化。数的符号不变,而数值发生变化。左移一位将使数值扩大一倍(乘以左移一位将使数值扩大一倍(乘以2 2)右移一位则使数值缩小一倍(乘以右移一位则使数值缩小一倍(乘以1/21/2)第4页,本讲稿共28页第二部分:第3章 数值运算及运算器3、算术移位(续)三、移位运算(1 1)正数:原码、补码、反码左右移位时,空位)正数:原码、补码、反码左右移位时,空位均补入均补入0 0(符号不变)。(符号不变)。例例3 3:A A寄存器初值:寄存器初值:0.01100.0110左移一位:左移一位:0.1100.1100 0右移一位:右移一位:0.0.0 0011011第5页,本讲稿共28页第二部分:第3章 数值运算及运算器3、算术移位(续)三、移位运算(2 2)负数:)负数:v原码:符号位不变(为原码:符号位不变(为1 1),空位补),空位补0 0。例例4 4:A A寄存器的初值为寄存器的初值为 1.01101.0110 算术左移一位后为算术左移一位后为 1.1101.1100 0 算术右移一位后为算术右移一位后为 1.1.0 0011011v补码:左移后的空位补补码:左移后的空位补0 0,右移后的空位补,右移后的空位补1 1。第6页,本讲稿共28页第二部分:第3章 数值运算及运算器3、算术移位(续)三、移位运算例例5 5:初值:初值:1.10111.1011左移一位:左移一位:1.0111.0110 0右移一位:右移一位:1.1.1 1101101v反码:移位后的空位补反码:移位后的空位补1 1。例例6 6:初值:初值:1.10111.1011左移一位:左移一位:1.0111.0111 1右移一位:右移一位:1.1.1 1101101第7页,本讲稿共28页第二部分:第3章 数值运算及运算器四、乘法运算v 实现乘除运算的方案:实现乘除运算的方案:1 1、软件实现、软件实现2 2、设置专用的乘、除法器、设置专用的乘、除法器3 3、在加法器基础上增加逻辑线路、在加法器基础上增加逻辑线路 在在计计算算机机中中,乘乘法法运运算算大大多多数数由由累累加加与与移移位位来来实实现现,也也有有些些机机器器中中具具有有由由大大规规模模集集成成电电路路制造的阵列乘法模块。制造的阵列乘法模块。第8页,本讲稿共28页 原原码码一一位位乘乘法法是是从从手手算算演演变变而而来来的的,即即用用两两个个操操作作数数的的绝绝对对值值相相乘乘,乘乘积积的的符符号号为为两两操操作数符号的异或值(同号为正,异号为负)。作数符号的异或值(同号为正,异号为负)。乘积乘积P=|X|Y|符号符号Ps=Xs Ys 式式中中:Ps为为乘乘积积的的符符号号,Xs和和Ys为为被被乘乘数和乘数的符号。数和乘数的符号。第二部分:第3章 数值运算及运算器四、乘法运算1、原码一位乘第9页,本讲稿共28页第二部分:第3章 数值运算及运算器四、乘法运算1、原码一位乘(续)v原码一位乘法的规则:原码一位乘法的规则:参加运算的操作数取其绝对值;参加运算的操作数取其绝对值;令乘数的最低位为判断位,若为令乘数的最低位为判断位,若为“1 1”,加被乘,加被乘数,若为数,若为“0 0”,不加被乘数(加,不加被乘数(加0 0););累加后的部分积以及乘数右移一位;累加后的部分积以及乘数右移一位;重复重复n n次次和和 ;符号位单独处理,同号为正,异号为负。符号位单独处理,同号为正,异号为负。第10页,本讲稿共28页 通通常常,乘乘法法运运算算需需要要3个个寄寄存存器器。被被乘乘数数存存放放在在B寄寄存存器器中中;乘乘数数存存放放在在C寄寄存存器器中中;A寄寄存存器器用用来来存存放放部部分分积积与与最最后后乘乘积积的的高高位位部部分分,它它的的初初值值为为0。运运算算结结束束后后寄寄存存器器C中中不不再再保保留留乘数,改为存放乘积的低位部分。乘数,改为存放乘积的低位部分。例例7:已知:已知:X=0.1101,Y=-0.1011,求:,求:XY。|X|=00.1101B,|Y|=0.1011C,0A第二部分:第3章 数值运算及运算器四、乘法运算1、原码一位乘(续)第11页,本讲稿共28页 A C 说明说明0 0.0 0 0 0 1 0 1 10 0.1 1 0 1 0 0.0 1 1 0 1 1 0 1 部分积右移一位部分积右移一位0 1.0 0 1 1+|X|0 0.1 1 0 1 C4=1,+|X|0 0.1 0 0 1 1 1 1 0 部分积右移一位部分积右移一位+0 0 0.0 0 0 0 C4=0,+00 0.1 0 0 1 0 0.0 1 0 0 1 1 1 1 部分积右移一位部分积右移一位+|X|0 0.1 1 0 1 C4=1,+|X|0 1.0 0 0 1 0 0.1 0 0 0 1 1 1 1 部分积右移一位部分积右移一位PS=XS YS=0 1=1X Y=-0.10001111 第二部分:第3章 数值运算及运算器+|X|0 0.1 1 0 1 C4=1,+|X|第12页,本讲稿共28页图图1 1 原码一位乘法流程图原码一位乘法流程图 第二部分:第3章 数值运算及运算器EndYN|X|B,|Y|C0 A,0 CRCn=1?CR+1CRCR=n?(A+0)A C C (A+B)A C CXS YS PSYN 第13页,本讲稿共28页第二部分:第3章 数值运算及运算器四、乘法运算2、原码两位乘v原码两位乘法的规则:原码两位乘法的规则:参加运算的数用原码来表示。符号位不参加乘法运算,单独处理,参加运算的数用原码来表示。符号位不参加乘法运算,单独处理,同号为正,异号为负。乘数的数值位个数为奇数时,用一个符号同号为正,异号为负。乘数的数值位个数为奇数时,用一个符号位,为偶数时乘数取双符号位。被乘数和部分积取位,为偶数时乘数取双符号位。被乘数和部分积取3 3个符号位。个符号位。增加一个触发器增加一个触发器C Cj j,初始值为,初始值为0 0。逐次比较相邻两位逐次比较相邻两位Y Yi-1i-1Y Yi i及及C Cj j的值决定应执行的操作的值决定应执行的操作,-|X|,-|X|操作可以操作可以按按,+|X|,+|X|变补变补来实现来实现 。当乘数的数值位个数为奇数时,共需当乘数的数值位个数为奇数时,共需(n+1)/2(n+1)/2累加和移位,但最累加和移位,但最后一次移后一次移1 1位;当乘数的数值位个数为偶数时,共需位;当乘数的数值位个数为偶数时,共需n/2+1n/2+1次累加,次累加,n/2n/2次移位(最后一次不移位)。次移位(最后一次不移位)。第14页,本讲稿共28页 例例8:已知:已知:X=0.11011,Y=-0.11101,求:,求:XY。X原原=0.11011,Y原原=1.11101,-X补补=1.00101|X|=000.11011B,|Y|=0.11101C,0Cj第二部分:第3章 数值运算及运算器四、乘法运算2、原码两位乘(续)第15页,本讲稿共28页 A C Cj 说明说明0 0 0.0 0 0 0 0 0.1 1 1 0 1 00 0 0.1 1 0 1 1 0 0 0.0 0 1 1 0 1 1 0 1 1 1 0 部分积右移两位部分积右移两位+|X|0 0 0.1 1 0 1 1 C4C5Cj=010,+|X|,Cj=0PS=XS YS=0 1=1 X Y=-0.1100001111 第二部分:第3章 数值运算及运算器+|X|变补 1 1 1.0 0 1 0 1 C4C5Cj=110,+|X|变补,Cj=11 1 1.0 1 0 1 1 1 1 1.1 1 0 1 0 1 1 1 1 0 1 1 部分积右移两位部分积右移两位+2|X|0 0 1.1 0 1 1 0 C4C5Cj=011,+2|X|,Cj=00 0 1.1 0 0 0 0 0 0 0.1 1 0 0 0 0 1 1 1 1 0 1 部分积右移一位部分积右移一位第16页,本讲稿共28页 虽虽然然原原码码乘乘法法比比补补码码乘乘法法容容易易实实现现,但但因因为为补补码码加加减减法法简简单单,在在以以加加减减运运算算为为主主的的通通用用机机中中操操作作数数都都用用补补码码表表示示,所所以以这这类类计计算算机机在在做做乘乘法法时常使用补码乘法。时常使用补码乘法。(1)校正法校正法 校校正正法法是是将将X补补和和Y补补按按原原码码规规则则运运算算,所所得得结结果果根根据据情情况况再再加加以以校校正正,从从而而得得到到正正确确的的XY补补。补码乘法的统一表达式:。补码乘法的统一表达式:XY补补=X补补(0.Y1Y2Yn)+-X补补Ys第二部分:第3章 数值运算及运算器四、乘法运算3、补码一位乘第17页,本讲稿共28页(2 2)比较法)比较法BoothBooth乘法乘法 递推公式:递推公式:Z0补补=0 Z1补补=2-1Z0补补+(Yn+1-Yn)X补补 Z2补补=2-1Z1补补+(Yn-Yn-1)X补补 Zn补补=2-1Zn-1补补+(Y2-Y1)X补补 XY补补=Zn补补+(Y1-Ys)X补补 式式中中,Z0补补为为初初始始部部分分积积,Z1补补Zn补补依次为各次求得的累加并右移之后的部分积。依次为各次求得的累加并右移之后的部分积。四、乘法运算3、补码一位乘第二部分:第3章 数值运算及运算器第18页,本讲稿共28页 判断位判断位 Yn Yn+1 操操 作作 0 0 原部分积右移一位原部分积右移一位 0 1 原部分积加原部分积加X补补后右移一位后右移一位 1 0 原部分积加原部分积加-X补补后右移一位后右移一位 1 1 原部分积右移一位原部分积右移一位 (2)比较法)比较法Booth乘法乘法(续)(续)四、乘法运算3、补码一位乘第二部分:第3章 数值运算及运算器第19页,本讲稿共28页 Booth乘法规则:乘法规则:参加运算的数用补码表示;参加运算的数用补码表示;符号位参加运算;符号位参加运算;乘数最低位后面增加一位附加位乘数最低位后面增加一位附加位Yn+1,其初值为,其初值为0;由由于于每每求求一一次次部部分分积积要要右右移移一一位位,所所以以乘乘数数的的最最低低两两位位Yn、Yn+1的值决定了每次应执行的操作;的值决定了每次应执行的操作;移位按补码右移规则进行;移位按补码右移规则进行;共需做共需做n+1次累加,次累加,n次移位,第次移位,第n+1次不移位。次不移位。(2)比较法)比较法Booth乘法(续)乘法(续)四、乘法运算3、补码一位乘第二部分:第3章 数值运算及运算器第20页,本讲稿共28页 由由于于符符号号位位要要参参加加运运算算,部部分分积积累累加加时时最最高高有有效效位位产产生生的的进进位位可可能能会会侵侵占占符符号号位位,故故被被乘乘数数和和部部分分积积应应取取双双符符号号位位,而而乘乘数数只只需需要要一一位位符符号号位位。运运算算时时仍仍需需要要有有3个个寄寄存存器器,各各自自的的作作用用与与原原码码时时相相同,只不过存放的内容均为补码表示而已。同,只不过存放的内容均为补码表示而已。例例9:已知:已知X=-0.1101,Y=0.1011;求;求XY。X补补=11.0011B,Y补补=0.1011C,0A -X补补=00.1101(2)比较法)比较法Booth乘法(续)乘法(续)四、乘法运算3、补码一位乘第二部分:第3章 数值运算及运算器第21页,本讲稿共28页 A C A C 附加位附加位 说明说明0 0.0 0 0 0 0.1 0 1 1 0+-X补 0 0.1 1 0 1 C4C5=10,+-X补0 0.1 1 0 1 0 0.0 1 1 0 0 0.0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 部分积右移一位部分积右移一位+0 0 0.0 0 0 0 C4C5=11,+00 0.0 1 1 0 0 0.0 0 1 1 0 0.0 0 1 1 0 10 1 0 1 0 1 0 1 0 1 部分积右移一位部分积右移一位+X补 1 1.0 0 1 1 C4C5=01,+X补1 1.0 1 1 0 1 1.1 0 1 1 1 1.1 0 1 1 0 0 10 0 1 0 1 0 0 1 0 部分积右移一位部分积右移一位+-X补 0 0.1 1 0 1 C4C5=10,+-X补0 0.1 0 0 0 0 0.0 1 0 0 0 0.0 1 0 0 0 0 0 10 0 0 1 0 1 0 1 部分积右移一位部分积右移一位+X补 1 1.0 0 1 1 C4C5=01,+X补1 1.0 1 1 1X Y补补=1.01110001X Y=-0.10001111第二部分:第3章 数值运算及运算器第22页,本讲稿共28页图图2 Booth乘法流程图乘法流程图第二部分:第3章 数值运算及运算器第23页,本讲稿共28页四、乘法运算4、补码两位乘第二部分:第3章 数值运算及运算器 每次处理乘数中的两位,使速度提高一倍。每次处理乘数中的两位,使速度提高一倍。Z补补=2-1Z补补+(Yi+1-Yi)X补补 Z补补=2-1Z补补+(Yi-Yi-1)X补补 =2-2Z补补+(Yi+1+Yi-2Yi-1)X补补第24页,本讲稿共28页第二部分:第3章 数值运算及运算器四、乘法运算4、补码两位乘v补码两位乘法的规则:补码两位乘法的规则:参加运算的数用补码来表示。符号位参加乘法运算。乘数的数值参加运算的数用补码来表示。符号位参加乘法运算。乘数的数值位个数为奇数时,用一个符号位,为偶数时乘数取双符号位。被位个数为奇数时,用一个符号位,为偶数时乘数取双符号位。被乘数和部分积取乘数和部分积取3 3个符号位。个符号位。乘数的最低位增加一位附加位乘数的最低位增加一位附加位Y Yn+1n+1,初始值为,初始值为0 0。逐次比较相邻逐次比较相邻3 3位位Y Yi-1i-1Y Yi iY Yi+1i+1的值决定应执行的操作。移位按补码右的值决定应执行的操作。移位按补码右移规则来实现移规则来实现 。当乘数的数值位个数为奇数时,共需当乘数的数值位个数为奇数时,共需(n+1)/2(n+1)/2累加和移位,但最后一累加和移位,但最后一次移次移1 1位;当乘数的数值位个数为偶数时,共需位;当乘数的数值位个数为偶数时,共需n/2+1n/2+1次累加,次累加,n/2n/2次移位(最后一次不移位)。次移位(最后一次不移位)。第25页,本讲稿共28页 例例9:已已知知:X=0.01001,Y=-0.01101,采采用用两两位位补码求:补码求:XY。X补补=000.01001,Y补补=1.0011,-X补补=111.10111,2X补补=000.10010,2-X补补=111.01110 X补补B,Y补补C第二部分:第3章 数值运算及运算器四、乘法运算4、补码两位乘(续)第26页,本讲稿共28页 A C 附加位附加位 说明说明0 0 0.0 0 0 0 0 1.1 0 0 1 1 01 1 1.1 0 1 1 1 1 1 1.1 1 1 0 1 1 1 1 1 0 0 1 部分积右移两位部分积右移两位X Y补补=1.1110001011 X Y=-0.0001110101 第二部分:第3章 数值运算及运算器+X补 0 0 0.0 1 0 0 1 C4C5C6=001,+X补0 0 0.0 0 1 1 0 0 0 0.0 0 0 0 1 1 0 1 1 1 1 0 部分积右移两位部分积右移两位1 1 1.1 1 0 0 0 1 1 1.1 1 1 0 0 0 1 0 1 1 1 1 部分积右移一位部分积右移一位+-X补 1 1 1.1 0 1 1 1 C4C5C6=110,+-X补+-X补 1 1 1.1 0 1 1 1 C4C5C6=110,+-X补第27页,本讲稿共28页作业:课本77页,3.1(1),(2);3.2(1),(2);3.3(1);3.4(2)第二部分:第3章 数值运算及运算器第28页,本讲稿共28页