1、1计算机组成原理数计算机组成原理数据的表示和运算据的表示和运算2第二部分第二部分 数据的表示和运算数据的表示和运算 n 2.1 数制与编码数制与编码n 2.2 定点数表示和运算定点数表示和运算n 2.3 浮点数表示和运算浮点数表示和运算n 2.4 算术逻辑单元算术逻辑单元ALU3 2.2 定点数表示和运算定点数表示和运算 2.2.1 定点数的表示定点数的表示 1、无符号数的表示;、无符号数的表示; 2、有符号数的表示。、有符号数的表示。2.2.2 定点数的运算定点数的运算 1、定点数的位移运算;、定点数的位移运算; 2、原码定点数的加、原码定点数的加/减运算;减运算; 3、补码定点数的加、补码
2、定点数的加/减运算;减运算; 4、定点数的乘法运算、定点数的乘法运算4回顾回顾n1 1、移位运算、移位运算n对有符号数的移位运算成为对有符号数的移位运算成为算术移位算术移位。n对无符号数的移位运算成为对无符号数的移位运算成为逻辑移位。逻辑移位。n算术移位的特点:算术移位的特点:n对于正数,三种机器数算术移位后符号位均不变,左移最高位丢对于正数,三种机器数算术移位后符号位均不变,左移最高位丢1 1,结果错误;右移最低位丢结果错误;右移最低位丢1 1,影响精度。,影响精度。n对于负数,三种机器数算术移位后符号位不变。对于负数,三种机器数算术移位后符号位不变。n 原码左移,高位丢原码左移,高位丢1
3、1,结果出错;原码右移低位丢,结果出错;原码右移低位丢1 1,影响精度,影响精度。n 补码左移,高位丢补码左移,高位丢0 0,结果出错;补码右移低位丢,结果出错;补码右移低位丢1 1,影响精度。,影响精度。n 反码左移,高位丢反码左移,高位丢0 0,结果出错;反码右移低位丢,结果出错;反码右移低位丢0 0,影响精度。,影响精度。5n负数用补码表示,右移一位,是否也相当于乘1/2?n均为任意符号,则有补码乘法算式:x.n原码两位乘和原码一位乘比较n反码加法运算遵循 X反+Y反=X+Y反 规则。ny补 =x补.ny1y2 yn) + x补n= x*(y12-1+y22-2+ + yn2-n)nz1
4、补= 2-1(yn+1yn)x补+z0补 yn+1 = 0ny1y2 yn)n 乘积的符号位 x0 y0 = 0 1 = 1n 数值部分按绝对值相乘n移位和加受末位乘数控制ny补 = 2 +x.ny=2(y1y2 ynn 数值部分按绝对值相乘ny1 yn ) x补 y0n移位和加受末位乘数控制回顾回顾n2、补码定点数的加、补码定点数的加/减运算减运算n补码加法补码加法n补码加法的特点:补码加法的特点: 符号位作为数的一部分参加运算,符号位的进位丢掉。符号位作为数的一部分参加运算,符号位的进位丢掉。 运算结果为补码形式运算结果为补码形式n整数整数 A补补 + B补补= A+B补补 (mod 2n
5、+1)n小数小数 A补补 + B补补= A+B补补 (mod 2)n补码减法补码减法n因为因为 AB= A+(B ),所以有补码减法:,所以有补码减法:n整数整数 A B补补= A+(B )补补= A补补 + B补补 (mod 2n+1)n小数小数 A B补补= A+(B )补补= A补补 + B补补 (mod 2)从从Y补补求求-Y补补的法则是:的法则是: 对对Y补补包括符号位包括符号位“求反且最末位加求反且最末位加1” 6回顾回顾n3、溢出的检测、溢出的检测n 溢出:溢出:运算结果超出机器的表数范围运算结果超出机器的表数范围n定点加减法溢出条件:定点加减法溢出条件: 同号数相加或异号数相减
6、。同号数相加或异号数相减。 运算结果超载。运算结果超载。n1)溢出的检测)溢出的检测 可能产生溢出的情况可能产生溢出的情况两正数加,变负数,上溢(大于机器所能表示的最大数)两正数加,变负数,上溢(大于机器所能表示的最大数)两负数加,变正数,下溢(小于机器所能表示的最小数)两负数加,变正数,下溢(小于机器所能表示的最小数)n2)溢出的检测方法)溢出的检测方法n 双符号位法双符号位法(参与加减运算的数采用变形补码表示)(参与加减运算的数采用变形补码表示)单符号位法单符号位法7回顾回顾4 4、反码加减法运算、反码加减法运算n(1 1)反码加法运算)反码加法运算n 反码加法运算遵循反码加法运算遵循 X
7、X反反+Y+Y反反=X+Y=X+Y反反 规则。符号位参加运算规则。符号位参加运算。符号位相加后,。符号位相加后,如果有进位,则把该进位的数字加到数的最低位如果有进位,则把该进位的数字加到数的最低位,即循环进位,即循环进位。n(2 2)反码减法)反码减法n 两个反码表示的数相减,类似于补码减法,将减数变符号,并两个反码表示的数相减,类似于补码减法,将减数变符号,并根据变号后的减数取反,按反码加法进行。根据变号后的减数取反,按反码加法进行。82.2.2 定点数的运算定点数的运算n7、定点数的乘法运算、定点数的乘法运算 分析笔算乘法分析笔算乘法 A = 0.1101 BAB0 . 1 1 0 10
8、. 1 0 1 11 1 0 11 1 0 10 0 0 01 1 0 10 . 1 0 0 0 1 1 1 1乘积的符号心算求得乘积的符号心算求得符号位单独处理符号位单独处理乘数的某一位决定是否加被乘数乘数的某一位决定是否加被乘数 4 4个位积一起相加个位积一起相加乘积的位数扩大一倍乘积的位数扩大一倍 ?92.2.2 定点数的运算定点数的运算n笔算乘法改进笔算乘法改进A B = AAAAAAA + ( AA)A + 0 A + 0. 1( AA)= A +0.1 0 A+0.1(AA)= 2-1A +2-1 0 A+2-1(A + 2-1(A+0)第一步第一步 被乘数被乘数A + 0第二步第
9、二步 1,得新的部分积,得新的部分积第八步第八步 1,得结果,得结果第三步第三步 部分积部分积 + 被乘数被乘数右移一位右移一位102.2.2 定点数的运算定点数的运算n改进后的笔算乘法过程改进后的笔算乘法过程112.2.2 定点数的运算定点数的运算1)定点原码乘法)定点原码乘法 (1) 原码一位乘运算规则(以小数为例)原码一位乘运算规则(以小数为例)设设x原原 = x0.x1x2 xn y原原 = y0.y1y2 yn= (x0 y0). x*y*x y原原 = (x0 y0).(0.x1x2 xn)(0.y1y2 yn)式中式中 x*= 0.x1x2 xn 为为 x 的绝对值的绝对值 y*
10、= 0.y1y2 yn 为为 y 的绝对值的绝对值 乘积的符号位单独处理乘积的符号位单独处理 x0 y0数值部分为绝对值相乘数值部分为绝对值相乘 x* y*122.2.2 定点数的运算定点数的运算n原码一位乘递推公式原码一位乘递推公式x* y* = x*(0.y1y2 yn)= x*(y12-1+y22-2+ + yn2-n)= 2-1(y1x*+2-1(y2x*+ 2-1(ynx* + 0) )z1znz0 = 0z1 = 2-1(ynx*+z0)z2 = 2-1(yn-1x*+z1)zn = 2-1(y1x*+zn-1)z0132.2.2 定点数的运算定点数的运算 右图是一个右图是一个32
11、位乘法位乘法器的结构框图,其中器的结构框图,其中32位位被乘数放在被乘数放在R2中,运算开中,运算开始时始时32位乘数放在位乘数放在R1中,中,运算结束时运算结束时64位乘积的高位乘积的高位放在位放在R0中,低位放在中,低位放在R1中,中,R0和和R1串联移位。串联移位。 在该乘法过程中,每次操作是根据乘数的一位进行操作,对于在该乘法过程中,每次操作是根据乘数的一位进行操作,对于32位数的乘法,需要循环位数的乘法,需要循环32次完成一个乘法操作,因此称为一次完成一个乘法操作,因此称为一位乘法。位乘法。 142.2.2 定点数的运算定点数的运算 完成这个定点原码一位乘法的运算规则可以用如下完成这
12、个定点原码一位乘法的运算规则可以用如下图所示的逻辑流程图表示图所示的逻辑流程图表示。 152.2.2 定点数的运算定点数的运算 已知已知 x = 0.1110 y = 0.1101 求求x y原原逻辑逻辑右移右移逻辑逻辑右移右移162.2.2 定点数的运算定点数的运算n 乘积的符号位乘积的符号位 x0 y0 = 1 0 = 1n 数值部分按绝对值相乘数值部分按绝对值相乘n x* y* = 0. 1 0 1 1 0 1 1 0n 则则 x y原原 = 1. 1 0 1 1 0 1 1 0 特点特点n绝对值运算绝对值运算n用移位的次数判断乘法是否结束用移位的次数判断乘法是否结束n逻辑移位逻辑移位1
13、72.2.2 定点数的运算定点数的运算n原码一位乘的硬件配置原码一位乘的硬件配置0 A n 加加 法法 器器控控 制制 门门0 X n 移位和加控制移位和加控制计数器计数器 CSGM0Q n右移右移A、X、Q 均均 n+1 位位移位和加受末位乘数控制移位和加受末位乘数控制182.2.2 定点数的运算定点数的运算n(2)原码两位乘原码两位乘n原码两位乘与原码一位乘一样,符号位的运算和数值部分原码两位乘与原码一位乘一样,符号位的运算和数值部分是分开进行的,但原码两位乘是用两位乘数的状态来决定是分开进行的,但原码两位乘是用两位乘数的状态来决定新的部分积如何形成,因此可提高运算速度。新的部分积如何形成
14、,因此可提高运算速度。一位乘一位乘符号位符号位和和数值位数值位部分分开运算部分分开运算两位乘两位乘每次用乘数的每次用乘数的2 2位判断原部分积是否位判断原部分积是否加加和和 如何加如何加 被乘数被乘数192.2.2 定点数的运算定点数的运算n两位乘数共有两位乘数共有4种状态,对应这种状态,对应这4种状态可得下表。种状态可得下表。1 11 00 10 0新的部分积新的部分积乘数乘数yn-1 yn加加 “0” 2加加 1 倍的被乘数倍的被乘数 2加加 2 倍的被乘数倍的被乘数 2加加 3 倍的被乘数倍的被乘数 2202.2.2 定点数的运算定点数的运算n原码两位乘运算规则原码两位乘运算规则11 1
15、11 010 110 001 101 000 100 0 操操 作作 内内 容容标志位标志位Cj乘数判断位乘数判断位yn-1yn z 2, y* 2, Cj 保持保持“0” z 2, y* 2, Cj 保持保持“1”zx* 2, y* 2, Cj 保持保持“1” z+2x* 2, y* 2, Cj 保持保持“0”z+x* 2, y* 2, Cj 保持保持“0” zx* 2, y* 2, 置置“1” Cjz+2x* 2, y* 2, 置置“0” Cj z+x* 2, y* 2, 置置“0” Cj共有操作共有操作 +x* +2x* x* 2实际操作实际操作 +x*补补 +2x*补补 +x* 补补
16、2 补码移补码移212.2.2 定点数的运算定点数的运算例:已知例:已知 x = 0.111111 y = 0.111001 求求xy原原补补码码右右移移222.2.2 定点数的运算定点数的运算 数值部分的运算数值部分的运算 乘积的符号位乘积的符号位 x0 y0 = 0 1 = 1x* y* = 0. 1 1 1 0 0 0 0 0 0 1 1 1则则 x y原原 = 1. 1 1 1 0 0 0 0 0 0 1 1 1特点特点绝对值的补码运算绝对值的补码运算算术移位算术移位用移位的次数判断乘法是否结束用移位的次数判断乘法是否结束232.2.2 定点数的运算定点数的运算n原码两位乘和原码一位乘
17、比较原码两位乘和原码一位乘比较符号位符号位操作数操作数移位移位移位次数移位次数最多加法次数最多加法次数x0 y0 x0 y0绝对值绝对值绝对值的补码绝对值的补码逻辑右移逻辑右移算术右移算术右移nnn2(n为偶数)为偶数)n2+1(n为偶数)为偶数)原码一位乘原码一位乘原码两位乘原码两位乘n 为奇数时,原码两位乘移为奇数时,原码两位乘移 n/2 +1次次最多加最多加 n/2 +1次次242.2.2 定点数的运算定点数的运算n2) 补码乘法补码乘法(1)补码与真值的关系)补码与真值的关系 n设设 x补补 = x0.x1x2 xnn当当X0时,时,x0=0,x补补 = 0.x1x2 xn=xi2-i
18、 = xn当当x0 x(0.y1y2 yn) 补补 = x补补 (0.y1y2 yn) 所以所以 x.y补补= x补补 (0.y1y2 yn) + x补补 292.2.2 定点数的运算定点数的运算n 乘数乘数y补补,去掉符号位,操作同,去掉符号位,操作同 最后最后 加加x补补,校正,校正运算规律:运算规律:302.2.2 定点数的运算定点数的运算n 被乘数、乘数符号任意被乘数、乘数符号任意n设设x补补 = x0.x1x2 xn y补补 = y0.y1y2 ynn综合综合 ,得到补码乘法统一算式,得到补码乘法统一算式n x y补补= x补补( 0.y1 yn ) + x补补 y0n当当y0 时,
19、时,y0=0 x. y补补 = x补补. y n当当y0 时,时,y0=1 x.y补补= x补补 (0.y1y2 yn) + x补补 31补码比较法(补码比较法(Booth 算法)算法)设设x补补 = x0.x1x2 xn y补补 = y0.y1y2 ynx y补补= x补补( 0.y1 yn ) x补补 y0= x补补(y1 2-1+y22-2+ +yn2-n) x补补 y0= x补补(y0+y1 2-1+y22-2+ +yn2-n)= x补补y0+(y1 y12-1)+(y22-1y22-2)+ +(yn2-(n-1)yn2-n) = x补补(y1y0)+(y2y1)2-1+ +(ynyn
20、-1)2-(n-1)+(0 yn)2-n) y1 2-1 + + yn 2-nx补补= +x补补 2-1 = 20 2-12-2 = 2-1 2-2= x补补(y1y0)+(y2y1)2-1+ +(yn+1yn)2-n 附加位附加位 yn+132Booth 算法递推公式算法递推公式z0补补= 0z1补补= 2-1(yn+1yn)x补补+z0补补 yn+1 = 0zn补补= 2-1(y2y1)x补补+zn-1补补x y补补= zn补补+(y1y0)x补补最后一步不移位最后一步不移位如何实现如何实现 yi+1yi ?0 00 11 01 11+x补补 1+x补补 11yi yi+1操作操作yi+1
21、yi 0 1 -1 0 33例例已知已知 x = +0.0011 y = 0.1011 求求xy补补解:解:0 0 . 0 0 0 01 1 . 1 1 0 11 1 . 1 1 0 10 0 . 0 0 1 11 1 . 1 1 0 10 0 . 0 0 1 11 1 . 1 1 0 11 . 0 1 0 100 0 . 0 0 0 111 1 . 1 1 0 11 10 0 . 0 0 0 11 1 11 1 . 1 1 0 11 1 1 1 x补补 y补补 x补补 +x补补1 1 . 1 1 1 01 1 0 1 0 11+x补补0 0 . 0 0 0 01 1 1 0 101+x补补1
22、 1 . 1 1 1 01 1 1 1 0110 0 . 0 0 0 0 1 1 1 1 101+x补补+x补补 xy补补 =1.11011111 最后一步不移位最后一步不移位 342.2.2 定点数的运算定点数的运算Booth 算法的硬件配置算法的硬件配置A、X、Q 均均 n + 2 位位移位和加受末两位乘数控制移位和加受末两位乘数控制0 A n+1n + 2 位加法器位加法器控控 制制 门门0 X n+10 Q n n+1移位和加移位和加控制逻辑控制逻辑计数器计数器 CGM00,110110右移右移352.2.2 定点数的运算定点数的运算n补码两位乘补码两位乘 补码两位乘运算规则是根据补码
23、一位乘的规则,把比较补码两位乘运算规则是根据补码一位乘的规则,把比较y yi iy yi+1i+1的状态应执行的操作和比较的状态应执行的操作和比较y yi-1i-1y yi i 的状态应执行的操作合并成一步的状态应执行的操作合并成一步,便可得出补码两位乘的运算方法。,便可得出补码两位乘的运算方法。判断位判断位y yi-1i-1y y i iy yi+1i+1操作内容操作内容000000zzi+1i+1 补补=2=2-2-2zzi i 补补001001zzi+1i+1 补补=2=2-2-2zzi i 补补+x+x补补 010010zzi+1i+1 补补=2=2-2-2zzi i 补补+x+x补补
24、 011011zzi+1i+1 补补=2=2-2-2zzi i 补补+2x+2x补补 100100zzi+1i+1 补补=2=2-2-2zzi i 补补+2-x+2-x补补 101101zzi+1i+1 补补=2=2-2-2zzi i 补补+ -x+ -x补补 110110zzi+1i+1 补补=2=2-2-2zzi i 补补+-x+-x补补 111111zzi+1i+1 补补=2=2-2-2zzi i 补补362.2.2 定点数的运算定点数的运算n操作中出现加操作中出现加2x补和加补和加2-x补,故除右移两位的操作外,还有被乘补,故除右移两位的操作外,还有被乘数左移一位的操作;而加数左移一位
25、的操作;而加2x补和加补和加2-x补,都可能因溢出而侵占双补,都可能因溢出而侵占双符号位,故部分积和被乘数采用三位符号位。符号位,故部分积和被乘数采用三位符号位。 n补码两位乘的部分积多取一位符号位(共补码两位乘的部分积多取一位符号位(共3位),乘数也多取一位位),乘数也多取一位符号位(共符号位(共2位),这是由于乘数每次右移位),这是由于乘数每次右移2位,且用位,且用3位判断,故采位判断,故采用双符号位更便于硬件实现。可见,当乘数数值位为偶数时,乘数用双符号位更便于硬件实现。可见,当乘数数值位为偶数时,乘数取取2位符号位,共需作位符号位,共需作n/2次移位,最多作次移位,最多作n/2+1次加法,最后一步不次加法,最后一步不移位;当移位;当n为奇数时,可补为奇数时,可补0变为偶数位,以简化逻辑操作。也可对变为偶数位,以简化逻辑操作。也可对乘数取乘数取1位符号位,此时共作位符号位,此时共作n/2+1次加法和次加法和n/2+1次移位(最后一步次移位(最后一步移一位)。移一位)。对于整数补码乘法,其过程与小数乘法完全相同。为了区别于对于整数补码乘法,其过程与小数乘法完全相同。为了区别于小数乘法,在书写上可将符号位和数值位中间的小数乘法,在书写上可将符号位和数值位中间的“.”改为改为“,”即可即可。 感谢观看