
浮点四则运算PPT精品文档.ppt
67页6.4 浮点四则运算浮点四则运算浮点加减运算浮点加减运算浮点乘除法运算浮点乘除法运算1浮点数的形式回顾浮点数的形式回顾•任何一个实数都可以用浮点数形式来表示:任何一个实数都可以用浮点数形式来表示:•SSx为浮点数的尾数为浮点数的尾数,一般为绝对值小于,一般为绝对值小于1的的规格化数规格化数(补码表示时允许为补码表示时允许为-1),机器中可,机器中可用原码或补码表示用原码或补码表示•jx为浮点数的阶码为浮点数的阶码,一般为整数,机器中大,一般为整数,机器中大多用补码或移码表示多用补码或移码表示•r为浮点数的基数为浮点数的基数,以下以基数为,以下以基数为2进行讨论进行讨论 2浮点加减运算浮点加减运算•设两个浮点数设两个浮点数 ①①尾数的加减运算规则与定点数完全相同尾数的加减运算规则与定点数完全相同②②当两浮点数阶码不等时,因两尾数小数点当两浮点数阶码不等时,因两尾数小数点的实际位置不一样,尾数部分无法直接进的实际位置不一样,尾数部分无法直接进行加减运算行加减运算3浮点加减运算的步骤浮点加减运算的步骤1.对阶,使两数的小数点位置对齐对阶,使两数的小数点位置对齐2.尾数求和,将对阶后的两尾数按定点加减运算规则求和尾数求和,将对阶后的两尾数按定点加减运算规则求和(差差)。
3.规格化,为增加有效数字的位数,提高运算精度,必须规格化,为增加有效数字的位数,提高运算精度,必须将求和将求和(差差)后的尾数规格化后的尾数规格化4.舍入,为提高精度,要考虑尾数右移时丢失的数值位舍入,为提高精度,要考虑尾数右移时丢失的数值位5.判断结果判断结果 ,即判断结果是否溢出,即判断结果是否溢出 41. 对阶对阶•这一步操作是将两个加数的小数点对齐这一步操作是将两个加数的小数点对齐–求阶差求阶差△ △j小阶向大阶看齐,阶码较小小阶向大阶看齐,阶码较小的数,其尾数向右移每右移一位,阶的数,其尾数向右移每右移一位,阶码加码加“1”“1”,直到两数阶码相同为止直到两数阶码相同为止–尾数右移时可能会发生数码丢失,影响尾数右移时可能会发生数码丢失,影响精度5例,例,•两浮点数两浮点数x x==0.1101×20.1101×20101,,y=(-0.1010)×2y=(-0.1010)×21111,,求求x+yx+y1 1)首先写出)首先写出x x、、y y在计算机中的补码表示在计算机中的补码表示 [x][x]补补=00,01;00.1101=00,01;00.1101,,[y][y]补补=00,11;11.0110=00,11;11.0110 ( (2 2)在进行加法前,必须先对阶,故先求阶差:)在进行加法前,必须先对阶,故先求阶差: [Δj][Δj]补补=[j=[jx x] ]补补-[j-[jy y] ]补补=00,01+11,01=11,10=00,01+11,01=11,10 即即Δj=-2Δj=-2,表示,表示x x的阶码比的阶码比y y的阶码小,再按小阶向的阶码小,再按小阶向大阶看齐的原则,将大阶看齐的原则,将x x的尾数右移两位,其阶码加的尾数右移两位,其阶码加2 2。
得 得[x]'[x]'补补=00,11;00,0011=00,11;00,0011 此时, 此时,Δj=0Δj=0,表示对阶完毕表示对阶完毕62. 尾数求和尾数求和•将对阶后的两个尾数按定点加将对阶后的两个尾数按定点加(减减)运算规则进行运运算规则进行运算–注意:并不考虑溢出注意:并不考虑溢出——溢出由阶码决定溢出由阶码决定 接上例,两数对阶后得浮点机机器数:接上例,两数对阶后得浮点机机器数: [x] ′补补=00,11;00.0011 [y]补补=00,11;11.0110则尾数则尾数[Sx]ˊ补补+ [Sy]补补 =00.0011+11.0110=11.1001 即尾数相加后的机器数即尾数相加后的机器数:[x+y]补补=00,11;11.100173. 规格化规格化•尾数尾数S的规格化是指尾数满足条件:的规格化是指尾数满足条件:•如果采用双符号位的补码,则如果采用双符号位的补码,则 当 当S>0时,其补码规格化形式为时,其补码规格化形式为 [S]补补=00.1××…× 当 当S<0时,其补码规格化形式为时,其补码规格化形式为 [S]补补=11.0××…× •但对但对S<0时,有两种情况需特殊处理。
时,有两种情况需特殊处理①①S=-1/2,则,则[S]补补=11.100…0对于补码而言,它不满足于上面对于补码而言,它不满足于上面的规格化表示式为了便于硬件判断,特规定的规格化表示式为了便于硬件判断,特规定-1/2是规格化的数是规格化的数(对补码而言对补码而言)②②S=-1,则,则[S]补补=11.000…0因小数补码允许表示因小数补码允许表示-1,故,故-1视为视为规格化的数规格化的数 83. 规格化规格化•规格化又分左规和右规两种规格化又分左规和右规两种①①左规当尾数出现左规当尾数出现00.0××…×或或11.1××…×时,需左规时,需左规左规时尾数左移一位,阶码减左规时尾数左移一位,阶码减1,直到符合补码规格化,直到符合补码规格化表示式为止表示式为止②②右规当尾数出现右规当尾数出现01.××…×或或10.××…×时,表示尾数时,表示尾数溢出,这在定点加减运算中是不允许的,但在浮点运溢出,这在定点加减运算中是不允许的,但在浮点运算中这不算溢出,可通过右规处理右规时尾数右移算中这不算溢出,可通过右规处理右规时尾数右移一位,阶码加一位,阶码加1•接上例,求和结果为接上例,求和结果为[x+y]补补=00,11;11.1001 尾数的第一数值位与符号位相同,需左规,即将其左尾数的第一数值位与符号位相同,需左规,即将其左移一位,同时阶码减移一位,同时阶码减1,得,得[x+y]补补=00,10;11.0010。
94. 舍入舍入•在对阶和右规的过程中,可能会将尾数的低位丢在对阶和右规的过程中,可能会将尾数的低位丢失,引起误差,影响精度,为此可用舍入法来提失,引起误差,影响精度,为此可用舍入法来提高尾数的精度高尾数的精度 •进行舍入时应满足两个要求进行舍入时应满足两个要求–首先,对每一次运算的结果而言,要保证误差不超过首先,对每一次运算的结果而言,要保证误差不超过给定的范围比如,设机器尾数长给定的范围比如,设机器尾数长39位,要求每次运位,要求每次运算误差不超过末位(即第算误差不超过末位(即第39位)的位)的“1”,即小于,即小于 2-39–其次在大量的运算过程中要保证误差的平衡,即在每其次在大量的运算过程中要保证误差的平衡,即在每一次运算时,由于舍入处理,可能使运算结果增大了,一次运算时,由于舍入处理,可能使运算结果增大了,也可能减少了但总的说来,增加和减少的机会必需也可能减少了但总的说来,增加和减少的机会必需是均等的,否则会产生很大的是均等的,否则会产生很大的积累误差积累误差104. 舍入舍入—常用的舍入方法常用的舍入方法•“0舍舍1入入”法:法:“0舍舍1入入”法类似于十进制运算中的法类似于十进制运算中的“四舍五入四舍五入”法,即在尾数右移时,被移去的最高法,即在尾数右移时,被移去的最高数值位为数值位为0,则舍去;被移去的最高数值位为,则舍去;被移去的最高数值位为1,,则在尾数的末位加则在尾数的末位加1。
这样做可能使尾数又溢出,这样做可能使尾数又溢出,此时需此时需再做一次右规再做一次右规–特点:最大误差是最低位上的特点:最大误差是最低位上的-1/2到接近于到接近于1/2之间,之间,正误差可以和负误差抵消属于比较理想的方法,但正误差可以和负误差抵消属于比较理想的方法,但实现起来比较复杂实现起来比较复杂•“恒置恒置1”法:尾数右移时,不论丢掉的最高数值位法:尾数右移时,不论丢掉的最高数值位是是“1”或或“0”,都使右移后的尾数末位恒置,都使右移后的尾数末位恒置“1”这种方法同样有使尾数变大和变小的两种可能种方法同样有使尾数变大和变小的两种可能–特点:误差范围扩大,但正负误差可以相互抵消,实特点:误差范围扩大,但正负误差可以相互抵消,实现相对容易现相对容易115. 溢出判断溢出判断•在浮点规格化中已指出,当尾数之和在浮点规格化中已指出,当尾数之和(差差)出现出现01.××…×或或10.××…×时,并不表示溢出,只有将此数右规后,再根据时,并不表示溢出,只有将此数右规后,再根据阶码阶码来判断浮点运算结果是否溢出来判断浮点运算结果是否溢出•若机器数为补码,尾数为若机器数为补码,尾数为规格化规格化形式,并假设阶符取形式,并假设阶符取2位,位,阶码取阶码取7位,数符取位,数符取2位,尾数取位,尾数取n位,则它们能表示的补位,则它们能表示的补码在数轴上的表示范围如下图。
码在数轴上的表示范围如下图 A最小负数最小负数 2+127×(-1)B最大正数最大正数 2+127×(1-2-n)a最大负数最大负数 2-128×(-2-1-2-n)b最小正数最小正数 2-128×2-1 125. 溢出判断溢出判断•浮点机的溢出与否可由阶码的符号决定即浮点机的溢出与否可由阶码的符号决定即 阶码 阶码[j]补补=01,,××…×为上溢 阶码 阶码[j]补补=10,,××…×为下溢,按机器零处理为下溢,按机器零处理 当阶符为 当阶符为“01”时,需做溢出处理时,需做溢出处理•下溢时,浮点数值趋于零,故机器不做溢出处理,下溢时,浮点数值趋于零,故机器不做溢出处理,仅把它作为机器零仅把它作为机器零•上溢时才是浮点数真正溢出,机器需停止运算,上溢时才是浮点数真正溢出,机器需停止运算,作溢出中断处理作溢出中断处理–一般所说的浮点溢出,均是指上溢一般所说的浮点溢出,均是指上溢13•例:设例:设x=2-101×(-0.101000),y=2-100×(+0.111011),并假设,并假设阶符取阶符取2位,阶码取位,阶码取3位,数符取位,数符取2位,尾数取位,尾数取6位,求位,求x-y。
•解:由解:由x=2-101×(-0.101000),,y=2-100×(+0.111011) 得 得[x]补补=11,011;11.011000,,[y]补补=11,100;00.111011 ①①对阶对阶 [Δj]补补=[jx]补补-[jy]补补=11,011+00,100=11,111 即即Δj=-1,则则x的尾数向右移一位,阶码相应加的尾数向右移一位,阶码相应加1,即,即 [x]ˊ补补=11,100;11.101100 ②②求和求和 [Sx]ˊ补补-[Sy]补补=[Sx]补补+[-Sy]补补 =11.101100+11.000101 =10.110001 即即 [x-y]补补=11,100;10.110001 尾数符号位出现尾数符号位出现“10”,需右规14•解解(续)(续) ::即即 [x-y]补补=11,100;10.110001,, 尾数符号位出现尾数符号位出现“10”,需右规 ③③规格化规格化 右规后得右规后得 [x-y]补补=11,101;11.0110001 ④④舍入处理舍入处理 采用采用0舍舍1入法,其尾数右规时末位丢入法,其尾数右规时末位丢1,则,则 [x-y]补补=11,101;11.011001 ⑤⑤溢出判断溢出判断 经舍入处理后阶符为经舍入处理后阶符为“11”,不溢出,故最终,不溢出,故最终结果:结果: x-y= 2-011×(-0.100111)15浮点数加减浮点数加减运算流程运算流程 16浮点加减法运算特点浮点加减法运算特点1.大型计算机和高档微型机中,浮点加减法运算是由硬件大型计算机和高档微型机中,浮点加减法运算是由硬件完成的。
低档的微型机浮点加减法运算是由软件完成的,完成的低档的微型机浮点加减法运算是由软件完成的,但无论用硬件实现或由软件实现加减法运算,基本原理但无论用硬件实现或由软件实现加减法运算,基本原理是一致的是一致的2.浮点加减法运算要经过对阶、尾数求和、规格化、舍入浮点加减法运算要经过对阶、尾数求和、规格化、舍入和溢出判断五步操作其中尾数运算与定点加减法运算和溢出判断五步操作其中尾数运算与定点加减法运算相同,而对阶、舍入、规格化和溢出判断,则是浮点加相同,而对阶、舍入、规格化和溢出判断,则是浮点加减法与定点加减法运算不同的操作减法与定点加减法运算不同的操作3.在补码浮点运算中,阶码与尾数可以都用补码表示在在补码浮点运算中,阶码与尾数可以都用补码表示在硬件实现的运算中,阶符和数符常常采取双符号位,正硬件实现的运算中,阶符和数符常常采取双符号位,正数数符用数数符用00表示,负数数符用表示,负数数符用11表示17浮点乘除法运算浮点乘除法运算•设两浮点数设两浮点数 •则则 1.阶码运算阶码运算2.尾数运算尾数运算181. 阶码运算阶码运算•若阶码用补码运算若阶码用补码运算,乘积的阶码为,乘积的阶码为[jx]补补+[jy]补补,商的,商的阶码为阶码为[jx]补补-[jy]补补。
•若阶码用移码运算若阶码用移码运算,则,则 [jx]移移=2n+ jx -2n≤jx<2n (n为整数的位数为整数的位数) [jy]移移=2n+ jy -2n≤jy<2n (n为整数的位数为整数的位数) 所以所以[jx]移移+[jy]移移= 2n+ jx +2n+ jy = 2n+ (2n +( jx + jy))= 2n+[jx + jy]移 移 可见,直接用移码求阶码和时,其最高位多加了可见,直接用移码求阶码和时,其最高位多加了一个一个2n,要得到移码形式的结果,必须减去,要得到移码形式的结果,必须减去2n 19由于同一个真值的移码和补码其数值部分完全相同,由于同一个真值的移码和补码其数值部分完全相同,而符号位正好相反,即而符号位正好相反,即 [jy]补补=2n+1+ jy (mod 2n+1)•因此如果求阶码和可用下式完成:因此如果求阶码和可用下式完成: [jx]移移+[jy]补补= 2n+ jx +2n+1+ jy = 2n+ [2n +( jx + jy)] = [jx + jy]移移 (mod 2n+1) 则直接可得移码形式。
则直接可得移码形式 •同理,当作除法运算时,商的阶码可用下式完成:同理,当作除法运算时,商的阶码可用下式完成: [jx]移移+[-jy]补补 = [jx - jy]移移20阶码运算阶码运算•阶码运算方法:阶码运算方法:进行移码加减运算时,只需进行移码加减运算时,只需将移将移码表示的加数或减数的符号位取反码表示的加数或减数的符号位取反(即变为补码即变为补码),然后进行运算,就可得阶和,然后进行运算,就可得阶和(或阶差或阶差)的移码 •溢出判断:溢出判断:在原有移码符号位的前面在原有移码符号位的前面(即高位即高位)再增再增加位符号位,并规定该位恒用加位符号位,并规定该位恒用“0”表示,表示,而加数或而加数或减数的补码的两位符号位则一致减数的补码的两位符号位则一致–溢出的条件是运算结果移码的最高符号位为溢出的条件是运算结果移码的最高符号位为1此时若低位符号位为低位符号位为0,表示上溢;低位符号位为,表示上溢;低位符号位为1,表示下,表示下溢–如果运算结果移码的最高符号位为如果运算结果移码的最高符号位为0,即表明没溢出即表明没溢出此时若低位符号位为此时若低位符号位为1,表明结果为正:低位符号位为,表明结果为正:低位符号位为0,表示结果为负。
表示结果为负21阶码运算阶码运算•溢出判断举例:溢出判断举例:•设阶码取三位(不含符号位),设阶码取三位(不含符号位), 当当jx=+101,,jy=+110时,有时,有[jx]移移=01,101,, [jy]补补=00,110则:则: [jx +jy]移移=[jx]移移+ [jy]补补=01,101+00,110=10,001 结结果上溢果上溢 [jx -jy]移移=[jx]移移+ [-jy]补补=01,101+11,100=01,001 结结果果+1222. 尾数运算尾数运算•((1)浮点乘法尾数运算)浮点乘法尾数运算•((2)浮点除法尾数运算)浮点除法尾数运算 23((1)浮点乘法尾数运算)浮点乘法尾数运算•预处理:检测两个尾数中是否有一个为预处理:检测两个尾数中是否有一个为0,,若有一个为若有一个为0,乘积必为,乘积必为0,不再作其他操,不再作其他操作;如果两尾数均不为作;如果两尾数均不为0,则可进行乘法运,则可进行乘法运算 •相乘:两个浮点数的尾数相乘可以采用定相乘:两个浮点数的尾数相乘可以采用定点小数的任何一种乘法运算来完成点小数的任何一种乘法运算来完成 •规格化:规格化:相乘结果可能要进行左规,左规相乘结果可能要进行左规,左规时调整阶码后如果发生阶下溢,则作机器时调整阶码后如果发生阶下溢,则作机器零处理;如果发生阶上溢,则作溢出处理。
零处理;如果发生阶上溢,则作溢出处理24•尾数截断:尾数相乘会得到一个双倍字长尾数截断:尾数相乘会得到一个双倍字长的结果,若限定只取的结果,若限定只取1倍字长,则乘积的若倍字长,则乘积的若干低位将会丢失如何处理丢失的各位值,干低位将会丢失如何处理丢失的各位值,通常有两种办法通常有两种办法–截断处理:截断处理:无条件的丢掉正常尾数最低位之后无条件的丢掉正常尾数最低位之后的全部数值的全部数值–舍入处理:按浮点加减运算讨论的舍入原则进舍入处理:按浮点加减运算讨论的舍入原则进行舍入处理行舍入处理 25((1)浮点乘法尾数运算)浮点乘法尾数运算•舍入处理舍入处理–对于原码,采用对于原码,采用0舍舍1入法时,不论其值是正数或负数,入法时,不论其值是正数或负数,“舍舍”使数的绝对值变小,使数的绝对值变小,“入入”使数的绝对值变大使数的绝对值变大–对于补码,采用对于补码,采用0舍舍1入法时,若丢失的位不是全入法时,若丢失的位不是全0,对,对正数来说,正数来说,“舍舍”、、“入入”的结果与原码正好相同;对负的结果与原码正好相同;对负数来说,数来说,“舍舍”、、“入入”的结果与原码分析正好相反,即的结果与原码分析正好相反,即“舍舍”使绝对值变大,使绝对值变大,“入入”使绝对值变小。
使绝对值变小•为了使原码、补码舍入处理后的结果相同,对负数的补码可采为了使原码、补码舍入处理后的结果相同,对负数的补码可采用如下规则进行舍入处理用如下规则进行舍入处理–①①当丢失的各位均为当丢失的各位均为0 0时,不必舍入;时,不必舍入;–②②当丢失的各位数中的最高位为当丢失的各位数中的最高位为0 0时,且以下各位不全为时,且以下各位不全为0 0;或丢;或丢失的各位数中的最高位为失的各位数中的最高位为1 1,且以下各位均为,且以下各位均为0 0时,则舍去被丢失时,则舍去被丢失的各位;的各位;–③③当丢失的各位数中的最高位为当丢失的各位数中的最高位为1 1,且以下各位又不全为,且以下各位又不全为0 0时;则时;则在保留尾数的最末位加在保留尾数的最末位加1 1修正 26((1)浮点乘法尾数运算)浮点乘法尾数运算•舍入操作实例舍入操作实例[x]补补舍入前舍入前舍入后舍入后对应的真值对应的真值1.011100001.011110001.011101011.011111001.0111(不舍不入)(不舍不入)1.0111 (舍)(舍)1.0111 (舍)(舍)1.1000 (入)(入)-0.1001-0.1001-0.1001-0.1000•对负数的补码可采用如下规则进行舍入处理。
对负数的补码可采用如下规则进行舍入处理–①①当丢失的各位均为当丢失的各位均为0时,不必舍入;时,不必舍入;–②②当丢失的各位数中的最高位为当丢失的各位数中的最高位为0时,且以下各位不全为时,且以下各位不全为0;或丢失的各位数;或丢失的各位数中的最高位为中的最高位为1,且以下各位均为,且以下各位均为0时,则舍去被丢失的各位;时,则舍去被丢失的各位;–③③当丢失的各位数中的最高位为当丢失的各位数中的最高位为1,且以下各位又不全为,且以下各位又不全为0时;则在保留尾数时;则在保留尾数的最末位加的最末位加1修正 27[x]原原舍入前舍入前舍入后舍入后对应的真值对应的真值1.100100001.100010001.100010111.100001001.1001(不舍不入)(不舍不入)1.1001 (入)(入)1.1001 (入)(入)1.1000 (舍)(舍)-0.1001-0.1001-0.1001-0.100028浮点乘法运算举例浮点乘法运算举例 •例:设机器数阶码取例:设机器数阶码取3位位(不含阶符不含阶符),尾数取,尾数取7位位(不舍数符不舍数符),要求阶码用移码运算,尾数用补码运算,最后结果保,要求阶码用移码运算,尾数用补码运算,最后结果保留留1倍字长。
倍字长 •设设x=2-101×0.0110011),,y=2011×(-0.1110010) 求:求: x• y•解:解:[x]补补=11,,011;;00.0110011 [y]补补=00,,011;;11.0001110 ①①阶码运算阶码运算 [jx]移移=00,,011, [jy]补补=00,,011 [jx+jy]移移=[jx]移移+[jy]补补=00,,011+00,,011=00,,110 对应真值对应真值-229浮点乘法运算举例(续)浮点乘法运算举例(续)•②②尾数相乘(采用尾数相乘(采用Booth算法)其过程如下表所示算法)其过程如下表所示部分积乘 数yn+1说 明 00.0000000 00.0000000 + 11.10011011.00011100 100011100→1位+[-Sx]补 11.1001101 11.1100110 11.1110011 11.1111001 + 00.0110011 0 10100011 01010001 10101000111→1位→1位→1位+[Sx]补 00.0101100 00.0010110 00.0001011 00.0000101 + 11.1001101 1010 01010100 00101010 10010101000→1位→1位→1位++ [-Sx]补 11.10100101001010 •相乘的结果为:相乘的结果为:[Sx•Sy]补补=11.10100101001010 30浮点乘法运算举例(续)浮点乘法运算举例(续) 即即[x•y]补补=11,110;11.10100101001010•③③ 规格化。
左规后规格化左规后[x•y]补补=11,101;11.01001010010100 •④④舍入处理尾数为负,按负数的补码的舍入规则,取舍入处理尾数为负,按负数的补码的舍入规则,取1倍字长,丢失的倍字长,丢失的7位为位为0010100,应应“舍舍” 故最终的结果为:故最终的结果为:[x•y]补补=11,101;11.0100101 即:即:xy= 2-011×(-0.1011011) 31((2)浮点除法尾数运算)浮点除法尾数运算•步骤:步骤:①①检测被除数是否为检测被除数是否为0,若为,若为0,则商为,则商为0;再检;再检测除数是否为测除数是否为0,若为,若为0,则商为无穷大,另,则商为无穷大,另作处理若两数均不为作处理若两数均不为0,则可进行除法运算则可进行除法运算②②两浮点数尾数相除同样可采取定点小数的任两浮点数尾数相除同样可采取定点小数的任何一种除法运算来完成何一种除法运算来完成Ø对已规格化的尾数,为了防止除法结果溢出,可对已规格化的尾数,为了防止除法结果溢出,可先比较被除数和除数的绝对值,如果被除数的绝先比较被除数和除数的绝对值,如果被除数的绝对值大于除数的绝对值,则先将被除数右移一位,对值大于除数的绝对值,则先将被除数右移一位,其阶码加其阶码加1 1,再作尾数相除。
再作尾数相除此时所得结果必然是此时所得结果必然是规格化的定点小数规格化的定点小数 32浮点除法尾数运算浮点除法尾数运算—例题例题•例:例: x=2101×0.1001,y=2011×(-0.1101),按补码浮点运算,按补码浮点运算方法求方法求x//y•解:解:[x]补补=00,101;00.1001, [y]补补=00,011;11.0011,, [-Sy]补补=00.1101 ①①阶码相减阶码相减 [jx]补补-[jy]补补=00,101-00,011=00,101+11,101=00,010 ②②尾数相除(采用补码除法)尾数相除(采用补码除法)33浮点除法尾数运算浮点除法尾数运算—例题(续)例题(续)•②②尾数相除(采用补码除法)尾数相除(采用补码除法) 结果为结果为[Sx//Sy]=1.0101③③规格化尾数相除结果已为规格化数尾数相除结果已为规格化数 所以 所以[x//y]补补=00,010;11.0101,则,则[x//y]=2010×(-0.1011)被除数(余数)被除数(余数)商商说说 明明 00.1001 + 11.0011[Sx]补补与与[Sy] 补补异号,异号,+[Sy]补补 11.1100 11.1000 + 00.1101 1 1[R]补补与与[Sy] 补补同号,上商同号,上商1←1位位+[-Sy]补补 00.0101 00.1010 + 11.0011 1 0 1 0[R]补补与与[Sy] 补补异号,上商异号,上商0←1位位+[Sy]补补 11.1101 11.1010 + 00.1101 1 0 1 1 0 1[R]补补与与[Sy] 补补同号,上商同号,上商1←1位位+[-Sy]补补 00.0111 + 00.1110 1 0 1 0 1 0 1 0 1[R]补补与与[Sy] 补补异号,上商异号,上商0←1位,末位商恒置位,末位商恒置134浮点乘除法运算浮点乘除法运算1.1.两浮点数相乘其乘积的阶码为相乘两数阶码之两浮点数相乘其乘积的阶码为相乘两数阶码之和和, ,其尾数应为相乘两数的尾数之积。
其尾数应为相乘两数的尾数之积2.2.两个浮点数相除,商的阶码为被除数的阶码减两个浮点数相除,商的阶码为被除数的阶码减去除数的阶码得到的差,尾数为被除数的尾数去除数的阶码得到的差,尾数为被除数的尾数除以除数的尾数所得的商除以除数的尾数所得的商3.3.参加运算的两个数都为规格化浮点数,乘除运参加运算的两个数都为规格化浮点数,乘除运算都可能出现结果不满足规格化要求的问题,算都可能出现结果不满足规格化要求的问题,因此也必须进行因此也必须进行规格化、舍入和溢出判断规格化、舍入和溢出判断等操等操作规格化时要修改阶码规格化时要修改阶码35浮点运算所需的硬件配置浮点运算所需的硬件配置•浮点运算器主要由两个定点运算部件组成:浮点运算器主要由两个定点运算部件组成:–阶码运算部件:阶码运算部件:用来完成阶码加、减,以及控制对阶时小阶的尾用来完成阶码加、减,以及控制对阶时小阶的尾数右移次数和规格化时对阶码的调整数右移次数和规格化时对阶码的调整–尾数运算部件:尾数运算部件:用来完成尾数的四则运算以及判断尾数是否已规用来完成尾数的四则运算以及判断尾数是否已规格化–此外,还需有判断运算结果是否溢出的电路等此外,还需有判断运算结果是否溢出的电路等。
•现代计算机可把浮点运算部件做成独立的选件,称为协处现代计算机可把浮点运算部件做成独立的选件,称为协处理器–浮点协处理器浮点协处理器Inte l80287可与可与Intel 80286或或80386微处理器配合微处理器配合处理浮点数的算术运算和多种函数计算处理浮点数的算术运算和多种函数计算•也可用编程的办法来完成浮点运算,不过这会影响机器的也可用编程的办法来完成浮点运算,不过这会影响机器的运算速度运算速度366.5 算术逻辑单元算术逻辑单元ALU电路、快速进位链电路、快速进位链 37ALU电路电路•Ai和和Bi为输入变量;为输入变量;Ki为控制信号,为控制信号,Ki的不的不同取值可决定该电路作哪一种算术运算或同取值可决定该电路作哪一种算术运算或哪一种逻辑运算;哪一种逻辑运算;Fi是输出函数是输出函数 3874181—ALU集成电路芯片集成电路芯片•74181是能完成四位二进制代码的算逻运算是能完成四位二进制代码的算逻运算部件,其外特性如下图所示部件,其外特性如下图所示正逻辑工作方式正逻辑工作方式负逻辑工作方式负逻辑工作方式•正逻辑中,“1”用高电平表示,“0”用低电平表示,而负逻辑刚好相反。
•正逻辑与负逻辑的关系为:正逻辑的“与”到负逻辑中变为“或”,即”+”、”·”互换3974181—ALU集成电路芯片集成电路芯片注意:注意:ALUALU为组合为组合逻辑电路,因此逻辑电路,因此实际应用实际应用ALUALU时,时,其输入端口其输入端口A A和和B B必须与锁存器相必须与锁存器相连,而且在运算连,而且在运算的过程中锁存器的过程中锁存器的内容是不变的的内容是不变的其输出也必须送其输出也必须送至寄存器中保存至寄存器中保存 4029C101芯片芯片•将寄存器和将寄存器和ALU集成到集成到一个芯片内一个芯片内41快速进位链快速进位链 •问题:随着操作数位数的增加,电路中进问题:随着操作数位数的增加,电路中进位的速度对运算时间的影响也越大位的速度对运算时间的影响也越大1.并行加法器并行加法器 ——多位加法器多位加法器2.串行进位链串行进位链 3.并行进位链并行进位链 –单重分组跳跃进位单重分组跳跃进位•即:单级分组 –双重分组跳跃进位双重分组跳跃进位 42半加器(half adder)COSCAB不考虑进位将两个一位二进制数A和B相加43全加器(full adder)•其输入不仅有两个1位二进制数相加,还需加上低位送来的进位。
COSCABCICI44双全加器74LS182的1/2逻辑图451. 并行(多位)加法器并行(多位)加法器•n+1个全加器级联,就组成了一个个全加器级联,就组成了一个n+1位的位的并行加法器(并行加法器(行波进位加法器)行波进位加法器) •由于每位全加器的进位输出是高一位全加由于每位全加器的进位输出是高一位全加器的进位输入,因此当全加器有进位时,器的进位输入,因此当全加器有进位时,这种一级一级传递进位的过程,将会大大这种一级一级传递进位的过程,将会大大影响运算速度影响运算速度 46并行加法器并行加法器•分析:分析:由全加器的逻辑表达式可知,由全加器的逻辑表达式可知,•Ci进位有两部分组成:本地进位进位有两部分组成:本地进位AiBi,可记作,可记作di,,与低位无关;传递进位(与低位无关;传递进位(Ai++Bi))Ci-1,与低位有,与低位有关,称(关,称(Ai++Bi)为传递条件,记作)为传递条件,记作ti,则:,则:•由由Ci的组成可以将逐级传递进位的结构转换为以的组成可以将逐级传递进位的结构转换为以进位链的方式实现快速进位进位链的方式实现快速进位目前进位链通常采目前进位链通常采用串行和并行两种。
用串行和并行两种 472. 串行进位链串行进位链•串行进位链串行进位链是指并行加法器中的进位信号采用串行传递是指并行加法器中的进位信号采用串行传递 •以四位并行加法器为例,每一位的进位表达式可示为:以四位并行加法器为例,每一位的进位表达式可示为:•由上式可见,采用与非逻辑电路可方便地实现进位传递,由上式可见,采用与非逻辑电路可方便地实现进位传递,如下图所示注意:如下图所示注意:A+B =-(-( -A * -B))48串行进位链串行进位链•延迟时间分析:延迟时间分析:–若设与非门的级延迟时间为若设与非门的级延迟时间为ty,那么当,那么当di、、ti形形成后,共需成后,共需8ty使可产生最高位的进位使可产生最高位的进位–实际上每增加一位全加器,进位时间就会增加实际上每增加一位全加器,进位时间就会增加2tyn位全加器的最长进位时间为位全加器的最长进位时间为2nty 493. 并行进位链并行进位链•并行进位链并行进位链是指并行加法器中的进位信号是指并行加法器中的进位信号是同时产生的,又称是同时产生的,又称先行进位先行进位、、跳跃进位跳跃进位等–超前进位加法器超前进位加法器•通常并行进位链有通常并行进位链有单重分组单重分组和和双重分组双重分组两两种实现方案。
种实现方案 •理想的并行进位链是理想的并行进位链是n位全加器的位全加器的n位进位位进位同时产生,但实际实现有困难同时产生,但实际实现有困难50((1)单重分组跳跃进位)单重分组跳跃进位•单重分组跳跃进位单重分组跳跃进位:将:将M位全加器分成若干小组,位全加器分成若干小组,小组内的进位同时产生,小组与小组之间采用串小组内的进位同时产生,小组与小组之间采用串行进位–又称为又称为“组内并行、组间串行组内并行、组间串行”进位 •以四位并行加法器为例,对其进位表示式稍作变以四位并行加法器为例,对其进位表示式稍作变换,便可获得并行进位表达式:换,便可获得并行进位表达式: 51四位一组并行进位四位一组并行进位•对应的逻辑图为:对应的逻辑图为: •设与或非门的级延迟时间为设与或非门的级延迟时间为1.5ty,与非门的级延迟时间仍,与非门的级延迟时间仍为为1ty,则,则di、、ti形成后,只需形成后,只需2.5ty就可产生全部进位就可产生全部进位 52单重分组跳跃进位单重分组跳跃进位•如果将如果将16位的全加器按四位一组分组,便可得单重分组跳位的全加器按四位一组分组,便可得单重分组跳跃进位链框图跃进位链框图•在在di、、ti形成后,经形成后,经2.5ty可产生可产生C3、、C2、、C3、、C3四个进位四个进位信息,经信息,经10ty就可产生全部进位就可产生全部进位。
–如前所示,如前所示,n=16的串行进位链的全部进位时间为的串行进位链的全部进位时间为32ty,则,则16位全位全加器的加器的单重分组方案进位时间仅约为串行进位链的单重分组方案进位时间仅约为串行进位链的三分之一三分之一53单重分组跳跃进位单重分组跳跃进位•缺点:但随着缺点:但随着n的增大,其优势便很快减弱的增大,其优势便很快减弱–例如,例如,n=64,,4位分组,共为位分组,共为16组:组间有组:组间有16位串行进位,在位串行进位,在di、、ti形成后,还需经形成后,还需经16×2.5== 40ty才能产生全部进位,显然进位时间太长才能产生全部进位,显然进位时间太长•如果能使组间进位也同时产生,必然会更如果能使组间进位也同时产生,必然会更大地提高进位速度,这就是组内、组间均大地提高进位速度,这就是组内、组间均为并行进位的方案为并行进位的方案 54((2)双重分组跳跃进位)双重分组跳跃进位•双重分组跳跃进位双重分组跳跃进位原理:原理:①①将将n位全加器分成几个大组位全加器分成几个大组②②每个大组又包含几个小组每个大组又包含几个小组③③每个大组内所包含的各个小组的最高位进位每个大组内所包含的各个小组的最高位进位是同时形成的,大组与大组间采用串行进位。
是同时形成的,大组与大组间采用串行进位 •各小组最高位进位是同时形成的,小组内各小组最高位进位是同时形成的,小组内的其他进位也是同时形成的的其他进位也是同时形成的–故又有故又有“组内并行组内并行、、组间并行组间并行”之称之称–注意:两小组内的其他进位与小组的最高位注意:两小组内的其他进位与小组的最高位进位并不是同时产生的,进位并不是同时产生的, 55双重分组跳跃进位双重分组跳跃进位•32位并行加法器双重分组跳跃进位链的框图位并行加法器双重分组跳跃进位链的框图 •分两大组,每个大组内包含分两大组,每个大组内包含4个小组,第一大组内的个小组,第一大组内的4个小个小组的最高位进位组的最高位进位C31、、C27、、C23、、C19是同时产生的;第二是同时产生的;第二大组内大组内4个小组的最高位进位个小组的最高位进位C15、、C11、、C7、、C3也是同时也是同时产生的,而第二大组向第一大组的进位产生的,而第二大组向第一大组的进位C15采用串行进位采用串行进位方式 56双重分组跳跃进位双重分组跳跃进位•32位并行加法器双重分组跳跃进位链的框图位并行加法器双重分组跳跃进位链的框图 •以第二大组为例,分析各进位的逻辑关系。
以第二大组为例,分析各进位的逻辑关系 D8与本小组内的di、ti有关,不依赖外来进C-1,故称D8为第八小组的本地进位, T8 是将低位进位C-1传到高位小组的条件,故称T8为第八小组的传送条件 57双重分组跳跃进位双重分组跳跃进位•32位并行加法器双重分组跳跃进位链的框图位并行加法器双重分组跳跃进位链的框图 •以第二大组为例,分析各进位的逻辑关系以第二大组为例,分析各进位的逻辑关系 •同理同理可写出第五、六、七小组的最高位进位表达式:可写出第五、六、七小组的最高位进位表达式: 58双重分组跳跃进位双重分组跳跃进位•进一步展开又得:进一步展开又得: •可得大组跳跃进位链可得大组跳跃进位链 :: 由图可见,当由图可见,当D Di i、、T Ti i(i=5(i=5~~8)8)及外来进及外来进位位C C-1-1形成后,再经过形成后,再经过2.52.5t ty y便可同时产生便可同时产生C Cl5l5、、C C1111,,C C7 7、、C C3 3 59双重分组跳跃进位双重分组跳跃进位•Di和和Ti它们都是由小组产生的,按其逻辑表它们都是由小组产生的,按其逻辑表达式可画出相应的电路如下图所示。
达式可画出相应的电路如下图所示 每小组可产生本小组的本地进位每小组可产生本小组的本地进位D Di i和传送条件和传送条件T Ti i以及组以及组内的各低位进位,但不能产生组内最高位进位,即内的各低位进位,但不能产生组内最高位进位,即 第五组形成 第五组形成D D5 5、、T T5 5、、C C1414、、C C1313、、C C1212,不产生,不产生C C1515;; 第六组形成 第六组形成D D6 6、、T T6 6、、C C1010、、C C9 9、、C C8 8,不产生,不产生C C1111;; 第七组形成 第七组形成D D7 7、、T T7 7、、C C6 6、、C C5 5、、C C4 4,不产生,不产生C C7 7;; 第八组形成 第八组形成D D8 8、、T T8 8、、C C2 2、、C C1 1、、C C0 0 ,,不产生不产生C C3 360双重分组跳跃进位双重分组跳跃进位•由大组跳跃进位链和小组跳跃进位链的线路可构成由大组跳跃进位链和小组跳跃进位链的线路可构成16位加位加法器的双重分组跳跃进位链框图法器的双重分组跳跃进位链框图•从从D Di i、、T Ti i、及、及C C-1-1( (外外来进位来进位) )形成后开始形成后开始后,后,①①经经2.52.5T Ty y::形成形成C C2 2、、C C1 1、、C C0 0和全部和全部D Di i、、T Ti i;;②②再经再经2.52.5T Ty y ::形成大形成大组内的四个进位组内的四个进位C Cl5l5、、C Cl1l1、、C C7 7、、C C3 3;;③③再经过再经过2.52.5T Ty y ::形成形成第五、六、七小组的第五、六、七小组的其余进位其余进位C Cl4l4、、C C1313、、C C1212、、C C1010、、C C9 9、、C C8 8、、C C6 6、、C C5 5、、C C4 4,,可见,按双重分组设计可见,按双重分组设计n=16n=16的进位链,最长的进位链,最长进位时间为进位时间为7.57.5T Ty y,比单重分组进位链又省,比单重分组进位链又省了了2.52.5T Ty y。
随着随着n n的增大,双重分组的优越性的增大,双重分组的优越性显得格外突出显得格外突出61双重分组跳跃进位双重分组跳跃进位•32位并行加法器双重分组跳跃进位链的框图位并行加法器双重分组跳跃进位链的框图 •从从D Di i、、T Ti i、及、及C C-1-1( (外来进位外来进位) )形成后开始后,形成后开始后,①①经经2.52.5T Ty y::形成形成C C2 2、、C C1 1、、C C0 0和全部和全部D Di i、、T Ti i;;②②再经再经2.52.5T Ty y ::形成第二大组内的四个进位形成第二大组内的四个进位C Cl5l5、、C Cl1l1、、C C7 7、、C C3 3;;③③再经过再经过2.52.5T Ty y ::形成形成C Cl8l8~~1616、、 C Cl4l4~~1212、、C C1010~~8 8、、C C6 6~~C C4 4、、C C3131、、C C2727、、C C2323、、C C1919;;④④再经过再经过2.52.5T Ty y ::形成形成C C3030~~2828、、 C C2626~~2424、、C C2222~~2020。
62进位方案选择和实例进位方案选择和实例•机器究竟采用哪种方案,每个小组内应包机器究竟采用哪种方案,每个小组内应包含几位,应根据运算速度指标及所选元件含几位,应根据运算速度指标及所选元件等诸方面团素综合考虑等诸方面团素综合考虑•74181芯片是芯片是4位位ALU电路,其四位进位是电路,其四位进位是同时产生的,多片同时产生的,多片74181级联就犹如本节介级联就犹如本节介绍的单重分组跳跃进位,即组内绍的单重分组跳跃进位,即组内(74181片片内内)并行,组间并行,组间(74181片间片间)串行 63进位方案选择和实例进位方案选择和实例•74182为先行进位部件,将为先行进位部件,将74181与与74182芯片配合,就芯片配合,就可组成双重分组跳跃进位链可组成双重分组跳跃进位链–两片两片74182和和8片片74181组成组成32位位ALU电路64本章小结本章小结1.数据的表示方法和转换数据的表示方法和转换2.无符号数和有符号数无符号数和有符号数3.数的定点表示和浮点表示数的定点表示和浮点表示4.定点运算定点运算5.浮点四则运算浮点四则运算6.算术逻辑单元算术逻辑单元ALU65作业作业•第第291页页—294页:页:4、、5、、7、、9、、12、、19((1)、)、19((4)、)、20((1)、)、21((1)、)、24((1)、)、25((1)、)、27((1)、)、28((1)、)、30((2)。
•报告:编写一个完成原码、补码四则运算报告:编写一个完成原码、补码四则运算(定点、浮点)的仿真程序定点、浮点)的仿真程序–输入:输入:x,,y–输出:演示运算每个步骤的流程图输出:演示运算每个步骤的流程图6667。












