欢迎来到天天文库
浏览记录
ID:1512627
大小:694.50 KB
页数:31页
时间:2017-11-12
《第五讲 定点运算(除法)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五讲定点运算(除法)本讲主要内容原码一位除法补码一位除法并行除法器一、分析笔算除法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、数和余数进行左移(相当于乘2)手工算法的改进算法:结果与手算相同,但余数不是真正的余数,多乘了2n,故正确的余数应为2-n×rn,即:0.0000000100.0001第四次余数r401.0010被除数左移一位,2x>y,商1+11.0101减y,即+[-y]补00.0111第一次余数r100.1110r1左移一位,2r1>y,商1+11.0101减y00.0011第二次余数r200.0110r2左移一位,2r2y,商1+11.0101减y00.101100.
3、1001x4、除法和机器除法的比较总结笔算除法机器除法商符单独处理心算上商符号位异或形成5、x6、–7、y8、>0上商19、x10、–11、y12、<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*商的符号位单独处理x013、y0[]原=(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.114、101①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余数为负15、上商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余数r0<0,商“0”+[y*]补00.1011恢复余数00.1001r0’01.00100商0移入q,r0’左移+[-y*]补11.0101减y*00.0111r1>0,商“1”00.11100.1商116、移入q,r1左移+[-y*]补11.0101减y*00.0011r2>0,商“1”00.01100.11商1移入q,r2左移+[-y*]补11.0101减y*11.1011r3<0,商“0”+[y*]补00.1011恢复余数00.0110r3’=2r200.11000.110商0移入q,r3’左移+[-y*]补1
4、除法和机器除法的比较总结笔算除法机器除法商符单独处理心算上商符号位异或形成
5、x
6、–
7、y
8、>0上商1
9、x
10、–
11、y
12、<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*商的符号位单独处理x0
13、y0[]原=(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.1
14、101①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余数为负
15、上商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余数r0<0,商“0”+[y*]补00.1011恢复余数00.1001r0’01.00100商0移入q,r0’左移+[-y*]补11.0101减y*00.0111r1>0,商“1”00.11100.1商1
16、移入q,r1左移+[-y*]补11.0101减y*00.0011r2>0,商“1”00.01100.11商1移入q,r2左移+[-y*]补11.0101减y*11.1011r3<0,商“0”+[y*]补00.1011恢复余数00.0110r3’=2r200.11000.110商0移入q,r3’左移+[-y*]补1
此文档下载收益归作者所有