您好,欢迎访问三七文档
当前位置:首页 > 幼儿/小学教育 > 小学教育 > 第五讲 定点运算(除法)
第五讲定点运算(除法)本讲主要内容•原码一位除法•补码一位除法•并行除法器一、分析笔算除法x=–0.1011y=0.1101求x÷y0.10110.1101⌒0.011010.010010.0011010.0001010.000011010.000001111商符单独处理心算上商余数不动低位补“0”减右移一位的除数上商位置不固定x÷y=–0.1101余数0.00000111商符心算求得00.101000???二.机器运算与手算的不同(1)在计算机中,小数点是固定的,不能简单地采用手算的办法。为便于机器操作,除数Y固定不变,被除数和余数进行左移(相当于乘2)手工算法的改进算法:结果与手算相同,但余数不是真正的余数,多乘了2n,故正确的余数应为2-n×rn,即:0.0000000100.0001第四次余数r401.0010被除数左移一位,2xy,商1+11.0101减y,即+[-y]补00.0111第一次余数r100.1110r1左移一位,2r1y,商1+11.0101减y00.0011第二次余数r200.0110r2左移一位,2r2y,商000.1100r3左移一位,2r3=4r2y,商1+11.0101减y00.101100.1001xy,商000.1101x=0.1001,y=0.1011,[-y]补=1.0101(2)机器不会心算,必须先作减法,若余数为正,才知道够减;若余数为负,才知道不够减。不够减时必须恢复原来的余数,以便再继续往下运算。这种方法称为恢复余数法。(3)要恢复原来的余数,只要当前的余数加上除数即可。但由于恢复余数,使除法进行过程的步数不固定,因此控制比较复杂。实际中常用不恢复余数法,又称加减交替法。其特点是运算过程中如出现不够减,则不必恢复余数,根据余数符号,可以继续往下运算,因此步数固定,控制简单。机器运算与手算的不同笔算除法和机器除法的比较总结笔算除法机器除法商符单独处理心算上商符号位异或形成|x|–|y|>0上商1|x|–|y|<0上商0余数不动低位补“0”减右移一位的除数2倍字长加法器上商位置不固定余数左移一位低位补“0”减除数1倍字长加法器在寄存器最末位上商三.原码除法以小数为例[x]原=x0.x1x2xn…[y]原=y0.y1y2yn…式中x*=0.x1x2xn为x的绝对值y*=0.y1y2yn为y的绝对值……数值部分为绝对值相除x*y*被除数不等于0除数不能为0小数定点除法x*<y*整数定点除法x*>y*商的符号位单独处理x0y0[]原=(x0y0).xyx*y*约定被除数减除数,够减时,商1;不够减时商0。由于商0时若不够减,即不能作减法,但现在在判断是否商0时,已经减了除数,为了下次能正确运算,必须把已减掉的除数加回去恢复余数。这就是“恢复余数法”。(1)恢复余数法0.10111.00111.00111.00110.0000+[–y*]补01.1110余数为负,上商00.1101恢复余数00.1001余数为正,上商1+[–y*]补1.0110011.0010011+[–y*]补解:被除数(余数)商说明[x]原=1.1011[y]原=1.1101①x0y0=11=0②x=–0.1011y=–0.1101求[]原xy例2410.1011恢复后的余数0+[y*]补[y*]补=0.1101[–y*]补=1.0011逻辑左移逻辑左移++++0.010101余数为正,上商1被除数(余数)商说明1.00110.11011.001110.1010011+[–y*]补1.1101011余数为负,上商0恢复余数1.010001101+[–y*]补0.01110110余数为正,上商1=0.1101x*y*∴[]原xy=0.1101上商5次第一次上商判溢出余数为正上商1余数为负上商0,恢复余数移4次100.1010恢复后的余数01101+[y*]补逻辑左移逻辑左移+++【例】x=0.1001,y=0.1011,用恢复余数法求x/y.解:[x]原=[x*]补=x=0.1001,[y*]补=0.1011,[-y*]补=1.010100.1001+[-y*]补11.0101x减y*11.1110余数r00,商“0”+[y*]补00.1011恢复余数00.1001r0’01.00100商0移入q,r0’左移+[-y*]补11.0101减y*00.0111r10,商“1”00.11100.1商1移入q,r1左移+[-y*]补11.0101减y*00.0011r20,商“1”00.01100.11商1移入q,r2左移+[-y*]补11.0101减y*11.1011r30,商“0”+[y*]补00.1011恢复余数00.0110r3’=2r200.11000.110商0移入q,r3’左移+[-y*]补11.0101减y*00.0001r40,商“1”00.00010.1101商1移入q,r4不左移被除数x/余数r商q说明[x]原=0.1001[y*]补=0.1011[-y*]补=1.0101余数每次左移相当于乘以2,在求得n位商后,相当于多乘了2n,所以最后余数应乘以2-n才是正确的值。故:[q]原=0.1101余数[r4]原=0.00000001(2)不恢复余数法余数Ri>0上商“1”,2Ri–y*余数Ri<0上商“0”,Ri+y*恢复余数2(Ri+y*)–y*=2Ri+y*加减交替•恢复余数法运算规则•不恢复余数法运算规则上商“1”2Ri–y*上商“0”2Ri+y*(加减交替法)x=–0.1011y=–0.1101求[]原xy解:例250.10111.00110.11011.00111.00110.11010.0000+[–y*]补01.1110余数为负,上商01.110001+[y*]补00.1001余数为正,上商1+[–y*]补1.0010011+[–y*]补+[y*]补0.101001111.1010011010.010101余数为正,上商10.01110110余数为正,上商11.1101011余数为负,上商0[x]原=1.1011[y*]补=0.1101[–y*]补=1.0011[y]原=1.11011101逻辑左移[x*]补=0.1011逻辑左移逻辑左移逻辑左移+++++①x0y0=11=0②x*y*=0.1101∴=0.1101[]原xy上商n+1次例25结果特点用移位的次数判断除法是否结束第一次上商判溢出移n次,加n+1次例x=0.1001,y=0.1011,用恢复余数法求x/y.解:[x]原=[x*]补=x=0.1001,[y*]补=0.1011,[-y*]补=1.010100.1001+[-y]补11.0101x减y11.1110余数r00,商“0”+[y]补00.1011恢复余数00.1001r0’01.00100商0移入q,r0’左移+[-y]补11.0101减y00.0111r10,商“1”00.11100.1商1移入q,r1左移+[-y]补11.0101减y00.0011r20,商“1”00.01100.11商1移入q,r2左移+[-y]补11.0101减y11.1011r30,商“0”+[y]补00.1011恢复余数00.0110r3’=2r200.11000.110商0移入q,r3’左移+[-y]补11.0101减y00.0001r40,商“1”00.00010.1101商1移入q,r4不左移被除数x/余数r商q说明[x]原=0.1001[y]补=0.1011[-y]补=1.0101余数每次左移相当于乘以2,在求得n位商后,相当于多乘了2n,所以最后余数应乘以2-n才是正确的值。故:[q]原=0.1101余数[r4]原=0.00000001(3)原码加减交替除法硬件配置A、X、Q均n+1位用Qn控制加减交替0Ann+1位加法器控制门0Xn0Qn计数器CGD加减移位和加控制逻辑SV左移[Ri]补=0.1000[x]补=1.1101[y]补=1.0101四.补码除法(加减交替法)(1)商值的确定x=0.1011y=0.0011[x]补=0.1011[y]补=0.0011[x]补=0.1011[–y]补=1.1101[Ri]补=0.1000x=–0.0011y=–0.1011[x]补=1.1101[–y]补=0.1011x*>y*[Ri]补与[y]补同号“够减”x*<y*[Ri]补与[y]补异号“不够减”++①比较被除数和除数绝对值的大小x与y同号小结x=0.1011y=–0.0011[x]补=0.1011[y]补=1.1101[x]补=0.1011[y]补=1.1101[Ri]补=0.1000x=–0.0011y=0.1011[x]补=1.1101[y]补=0.1011[x]补=1.1101[y]补=0.1011[Ri]补=0.1000x*>y*[Ri]补与[y]补异号“够减”x*<y*[Ri]补与[y]补同号“不够减”++x与y异号[x]补和[y]补求[Ri]补[Ri]补与[y]补同号异号[x]补–[y]补[x]补+[y]补同号,“够减”异号,“够减”②商值的确定[x]补与[y]补同号正商按原码上商“够减”上“1”“不够减”上“0”[x]补与[y]补异号负商按反码上商“够减”上“0”“不够减”上“1”原码0.××××1反码1.××××1末位恒置“1”法小结简化为(同号)(异号)(异号)(同号)×.××××1[x]补与[y]补商[Ri]补与[y]补商值够减不够减够减不够减同号异号正负1001原码上商反码上商[Ri]补与[y]补商值同号异号10(2)商符的形成除法过程中自然形成[x]补和[y]补同号[x]补–[y]补比较[Ri]补和[y]补同号(够)“1”异号(不够)“0”原码上商小数除法第一次“不够”上“0”正商[x]补和[y]补异号[x]补+[y]补比较[Ri]补和[y]补异号(够)“0”同号(不够)“1”反码上商小数除法第一次“不够”上“1”负商(3)新余数的形成加减交替[Ri]补和[y]补商新余数同号异号102[Ri]补+[–y]补2[Ri]补+[y]补补码一位除法的算法是在商的末位“恒置1”的舍入条件下推导的,故此算法存在误差,这样引起的最大误差是2-n。在对计算精度没有特殊要求的情况下,一般就采用商的末位“恒置1”的办法,这样操作比较简单,而且易于实现。如果需要进一步提高商的精度,可按上述方法多求一位,再用以下方法进行校正:(1)刚好能除尽时,若除数为正,商不必校正;若除数为负,则商加2-n。(4).商的校正(2)不能除尽时,若商为正,则不必校正;若商为负,则商加2-n。例26设x=–0.1011y=0.1101求并还原成真值[]补xy解:[x]补=1.0101[y]补=0.1101[–y]补=1.00111.01010.11011.00110.11010.11010.0000异号做加法10.0010同号上“1”1.01111异号上“0”+[y]补1.101110异号上“0”+[y]补0.0011100同号上“1”0.0100110.11101011.01101001末位恒置“1”0.011010011[]补=1.0011xy∴0011+[–y]补xy=–0.1101则逻辑左移逻辑左移逻辑左移逻辑左移++++(5)小结补码除法共上商n+1次(末位恒置1)第一次为商符第一次商可判断溢出加n次移n次用移位的次数判断除法是否结束精度误差最大为2-n(6)补码除和原码除(加减交替法)比较x0y0自然形成绝对值补码补码余数的正负比较余数和除数的符号n+1n+1原码除补码除商符操作数上商原则上商次数加法次数移位次数第一步操作移位[x*]补-[y*]补n逻辑左移nn+1逻辑左移n同号[x]补-[y]补异号[x]补+[y]补
本文标题:第五讲 定点运算(除法)
链接地址:https://www.777doc.com/doc-3375422 .html