四位二进制数除法器Word文档格式.docx
- 文档编号:19331751
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:20
- 大小:128.21KB
四位二进制数除法器Word文档格式.docx
《四位二进制数除法器Word文档格式.docx》由会员分享,可在线阅读,更多相关《四位二进制数除法器Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
综上所述便可得原码除法运算规则。
2.原码除法:
原码除法和原码乘法一样,符号位是单独处理的。
以小数为例:
设
式中
为x的绝对值,记作x*
为y的绝对值,记作y*
即商符由两数符号位“异或”运算求得,商值由两数绝对值相除(x*/y*)求得。
小数定点除法对被除数和除数有一定的约束,即必须满足下列条件:
0<|被除数|≤|除数|
实现除法运算时,还应避免除数为0或被除数为0。
前者结果为无限大,不能用机器的有限位数表示;
后者结果总是0,这个除法操作等于白做,浪费了机器时间。
至于商的位数一般与操作数的位数相同。
原码除法中由于对余数的处理不同,又可分为恢复余数法和不恢复余数法(加减交替法)两种。
(1)恢复余数法。
恢复余数法的特点是:
当余数为负时,需加上除数,将其恢复成原来的余数。
由上所述,商值的确定是通过比较被除数和除数的绝对值大小,即x*-y*实现的,而计算机内只设加法器,故需将x*-y*操作变为[x*]补+[-y*]补的操作。
例:
已知:
x=-0.1011,y=-0.1101,求:
[x÷
y]原
解:
由x*=0.1011,[x]原=1.1011
y*=0.1101,[-y]补=1.0011,[y]原=1.1101
商值的求解过程如下:
被除数(余数)
商
说
明
0.1011
+1.0011
0.0000
+[-y*]补(减去除数)
1.1110
+0.1101
余数为负,上商0
恢复余数+[y*]补
1.0110
0
被恢复的被除数
←1位
0.1001
1.0010
01
01
余数为正,上商1
0.0101
0.1010
+1.0011
011
011
1.1101
0110
1.0100
0110
0.0111
01101
故商值为0.1101
商的符号位为
由此可见,共上商5次,第一次上的商在商的整数位上,这对小数除法而言,可用它作溢出判断。
即当该位为“1”时,表示此除法为溢出,不能进行,应由程序进行处理;
当该位为“0”时,说明除法合法,可以进行。
在恢复余数法中,每当余数为负时,都需恢复余数,这变延长了机器除法的时间,操作也很不规则,对线路结构不利。
加减交替法可克服这些缺点。
(2)加减交替法。
加减交替法又称不恢复余数法,可以认为它是恢复余数法的一种改进算法。
分析原码恢复余数法得知:
当余数Ri>
0时,可上商“1”,再对Ri左移一位后减除数,即2Ri-y*。
0时,可上商“0”,然后再做Ri+y*,即完成恢复余数的运算,再做2(Ri+y*)-y*,也即2Ri+y*。
可见,原码恢复余数法可归纳为:
0时,商上“1”,做2Ri-y*的运算;
当余数Ri<
0时,商上“0”,做2Ri+y*的运算。
这里已看不出余数的恢复问题了,而只是做加y*或减y*,因此,一般把它叫做加减交替法或不恢复余数法。
y]原
[x]原=1.1011,x*=0.1011
[y]原=0.1101,y*=0.1101,[-y*]补=1.0011
商值的求解过程如下表所示:
+[-y*]补(减除数)
1.1100
0
+[y*]补(加除数)
1.1010
0110
商的符号位为
所以
分析此例可见,n位小数的除法共上商n+1次,第一次商用来判断是否溢出。
倘若比例因子选择恰当,除数结果不溢出,则第一次商肯定是0。
如果省去这位商,只需上商n次即可,此时除法运算一开始应将被除数左移一位减去除数,然后再根据余数上商。
(3)原码加减交替法所需的硬件配置。
下图是实现原码加减交替除法运算的基本硬件配置框图。
图中A、X、Q均为n+1位寄存器,其中A存放被除数的原码,X存放除数的原码。
移位和加控制逻辑受Q的末位Qn控制。
(Qn=1作减法,Qn=0作加法),计数器C用于控制逐位相除的次数n,GD为除法标记,V为溢出标记,S为商符。
(4)原码加减交替除法控制流程。
下图为原码加减交替除法控制流程图。
除法开始前,Q寄存器被清0,准备接收商,被除数的原码放在A中,除数的原码放在X中,计数器C中存放除数的位数n。
除法开始后,首先通过异或运算求出商符,并存于S。
接着将被除数和除数变为绝对值,然后开始用第一次上商判断是否溢出。
若溢出,则置溢出标记V为1,停止运算,进行中断处理,重新选择比例因子:
若无溢出,则先上商,接着A、Q同时左移一位,然后再根据上一次商值的状态,决定是加还是减除数,这样重复n次后,再上最后一次商(共上商n+1次),即得运算结果。
对于整数除法,要求满足以下条件:
0<
|除数|≤|被除数|
因为这样才能得到整数商。
通常在做整数除法前,先要对这个条件进行判断,若不满足上述条件,机器发出出错信号,程序要重新设定比例因子。
上述讨论的小数除法完全适用于整数除法,只是整数除法的被除数位数可以是除数的两倍,且要求被除数的高M位要比除数(n位)小,否则即为溢出。
如果被除数和除数的位数都是单字长,则要在被除数前面加上一个字的0,从而扩展成双倍字长再进行运算。
3.补码除法
与补码乘法类似,也可以用补码完成除法操作。
补码除法也分恢复余数法和加减交替法,后者用得较多,在此只讨论加减交替法。
(1)补码加减交替法运算规则。
补码除法其符号位和数值部分是一起参加运算的,因此在算法上不像原码除法那样直观,主要需解决三个问题:
第一,如何确定商值;
第二,如何形成商符;
第三,如何获得新的余数。
①商值的确定。
欲确定商值,必须先比较被除数和除数的大小,然后才能求得商值。
a.
比较被除数(余数)和除数的大小。
补码除法的操作数均为补码,其符号又是任意的,因此要比较被除数[x]补和除数[y]补的大小就不能简单地用[x]补减去[y]补。
实质上比较[x]补和[y]补的大小就是比较它们所对应的绝对值的大小。
同样在求商的过程中,比较余数[Ri]补与除数[y]补的大小,也是比较它们所对应的绝对值。
这种比较的算法可归纳为以下两点:
第一,当被除数与除数同号时,做减法,若得到的余数与除数同号,表示“够减”,否则表示“不够减”。
第二,当被除数与除数异号时,做加法,若得到的余数与除数异号,表示“够减”,否则表示“不够减”。
此算法如下表所示。
比较[x]补与[y]补的符号
求余数
比较[Ri]补与[y]补的符号
同号
[x]补-[y]补
同号,表示“够减”
异号
[x]补+[y]补
异号,表示“够减”
b.商值的确定。
补码除法的商也是用补码表示的,如果我们约定商的末位用“恒置1”的舍入规则,那么除末位商外,其余各位的商值对正商和负商而言,上商规则是不同的。
因为在负商的情况下,除末位商以外,其余任何一位的商与真值都正好相反。
因此,上商的算法可归纳为以下两点:
第一,如果[x]补与[y]补同号,商为正,则“够减”时上商“1”。
“不够减”时上商“0”(按原码规则上商)。
第二,如果[x]补与[y]补异号,商为负,则“够减”时上商“0”,“不够减”时上商“1”(按反码规则上商)。
结合比较规则与上商规则,使可得商值的确定办法,如下表所示。
[x]补与[y]补
[R]补与[y]补
商值
正
1
异号,表示“不够减”
负
同号,表示“不够减”
进一步简化,商值可直接由下表确定。
②商符的形成。
在补码除法中,商符是在求商的过程中自动形成的。
在小数定点除法中,被除数的绝对值必须小于除数的绝对值,否则商大于1而溢出。
因此,当[x]补与[y]补同号时,[x]补-[y]补所得的余数[R0]补与[y]补异号,商上“0”,恰好与商的符号(正)一致;
当[x]补与[y]补异号时,[x]补+[y]补所得的余数[R0]补与[y]补同号,商上“1”,这也与商的符号(负)一致。
可见,商符是在求商值过程中自动形成的。
此外,商的符号还可用来判断商是否溢出。
例如,当[x]补与[y]补同号时,若[R0]补与[y]补同号,上商“l”,即溢出。
当[x]补与[y]补异号时,若[R0]补与[y]补异号,上商“0”,即溢出。
当然,对于小数补码运算,商等于“-1”应该是允许的,但这需要特殊处理,为简化问题,这里不予考虑。
③新余数[Ri+1]补的获得。
新余数[Ri+1]补的获得方法与原码加减交替法极相似,其算法规则为:
当[R0]补与[y]补同号时,商上“l”,新余数
[Ri+1]补=2[Ri]补-[y]补=2[Ri]补+[-y]补
当[R0]补与[y]补异号时,商上“0”,新余数
[Ri+1]补=2[Ri]补+[y]补
将此法列于下表:
新余数[Ri+1]补
[Ri+1]补=2[Ri]补+[-y]补
[Ri+1]补=2[Ri]补+[y]补
如果对商的精度没有特殊要求,一般可采用“末位恒置1”法,这种方法操作简单,易于实现,而且最大误差仅为2-n。
x=-0.1001,y=+0.1101求:
[x÷
y]补
[x]补=1.0111,[y]补=0.1101,[-y]补=1.0011
运算过程如下:
商
上商
1.0111
+
0.1101
[x]补与[y]补异号,+[y]补
0.0100
0.1000
1.0011
1
[R]补与[y]补同号,上商1
+[-y]补
1.1011
1.0110
0.1101
10
[R]补与[y]补异号,上商0
+[y]补
0.0011
0.0110
101
1.1001
1.0010
1010
10101
←1位,末位商恒置“1”
所以[x÷
y]补=1.0101
(2)补码加减交替法所需的硬件配置。
补码加减交替法所需的硬件配置基本上与原码加减交替法所需的硬件配置相似。
(3)补码加减交替法的控制流程。
上图示出了补码加减交替除法的控制流程。
除法开始前,Q寄存器被清0,准备接收商,被除数的补码在A中,除数的补码在x中,计数器C中存放除数的位数M。
除法开始后,首先根据两操作数的符号确定是作加法还是减法,加(或减)操作后,即上第一次商(商符),然后A、Q同时左移一位,再根据商值的状态决定加或减除数,这样重复”次后,再上一次末位商“1”(恒置“1”法),即得运算结果。
补充说明几点:
①图中未画出补码除法溢出判断的内容;
②按流程图所示,多作一次加(或减)法,其实末位恒置“1”前,只需移位不必作加(或减)法;
⑨与原码除一样,图中均未指出对0进行检测,实际上在除法运算前,先检测被除数和除数是否为0,若被除数为0,结果即为0;
若除数为0,结果为无穷大,这两种情况都无需继续作除法运算;
④为了节省时间,上商和移位操作可以同时进行。
(3)补码加减交替法的控制流程。
除法开始前,Q寄存器被清0,准备接收商,被除数的补码在A中,除数的补码在x中,计数器C中存放除数的位数M。
1.移位的意义
计算机中小数点的位置是事先约定的,因此,二进制表示的机器数在相对于小数点作n位左移或右移时,其实质就便该数乘以或除以2n(n=1,2...n)。
移位运算又叫移位操作,对计算机来说,有很大的实用价值,例如,当计算机没有乘(除)运算线路时,可以采用移位和加法相结合,实现乘(除)运算。
计算机中机器数的字长往往是固定的,当机器数左移n位或右移n位时,必然会使其n位低位或n位高位出现空位。
那么,对空出的空位应该添补0还是1呢?
这与机器数采用有符号数还是无符号数有关,对有符号的移位叫算术移位。
2.算术移位规则
对于正数,由于[x]原=[x]补=[x]反=真值,故移位后出现的空位均以0添之。
对于负数,由于原码、补码和反码的表示形式不同,故当机器数移位时,对其空位的添补规则也不同。
下表列出了三种不同码制的机器数(整数或小数均可),分别对应正数或负数,移位后的添补规则。
必须注意的是:
不论是正数还是负数,移位后其符号位均不变,这是算术移位的重要特点。
不同码制机器数移位后的空位添补规则
码
制
添补代码
正数
原码、补码、反码
原码
负数
补码
左移添0
右移添1
反
码
由上表可得出如下结论:
(1)机器数为正时,不论左移或右移,添补代码均为0。
(2)由于负数的原码其数值部分与真值相同,故在移位时只要使符号位不变,其空位均添0。
(3)由于负数的反码其各位除符号位外与负数的原码正好相反,故移位后所添的代码应与原码相反,即全部添1。
(4)分析任意负数的补码可发现,当对其由低位向高位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二进制 法器