2.2 定点数的表示和运算 在计算机中,数的表示形式主要有定点数和浮点数,其中定点数较简单且是常见的一种表
原码乘法的特点是符号位单独处理,对n位乘数而言,共做n次累加,n次移位。每一次根据一位乘数来判断部分积是加被乘数还是不加被乘数。
(2)补码乘法。补码乘法有校正法和比较法两种。在校正法中,当乘数y为正时,可按类似原码乘法的规则进行运算。当乘数为负时,把乘数的补码[y]补去掉符号位,看成一个正数与[x]补相乘,然后加上[–x]补进行校正。按补码进行运算和按补码的规则进行移位,即右移补1,符号位一起移。符号位参与运算,自动生成与原码的不同之处。考虑到运算时可能出现绝对值大于1的情况(但此刻并不是溢出),故部分积和被乘数取双符号位。
现在广泛使用的是Booth算法,也称为比较法,其运算规则由校正法导出。设被乘数[x]补=x0.x1x2…xn,乘数[y]补=y0.y1y2…yn,被乘数x符号任意:
乘数y的符号为正时,有[x×y]补=[x]补×[y]补=[x]补×y;
乘数y的符号为负时,有[x×y]补=[x]补×[y]补=[x]补×(0.y1y2…yn)+[–x]补。
综合上述两种情况,被乘数x符号任意,乘数y符号任意,有:
[x×y]补=[x]补×[y]补=[x]补×(0.y1y2…yn)–[x]补×y0
补码比较法(Booth乘法)所需的硬件配置如图2-7所示。
补码比较法(Booth乘法)控制流程如图2-8所示。
6.定点数的除法运算
相对于乘法运算,除法运算也是通过由累加和位移操作实现的,不过除法运算使用的是左移。根据机器数的不同,除法运算可以分为原码除法和补码除法。
(1)原码除法。原码除法有恢复余数法、加减交替法两种。
在恢复余数法中,商值的确定是通过比较被除数和除数的绝对值大小,即通过x–y实现的。如果余数为正,说明够减,商上1;如果余数为负,说明不够减,商上0。若不够减却减了,必须将除数加回去,恢复成原来的余数。机器内只设加法器,故需将x–y操作变为[x]补+[–y]补的操作。因此,在判断够减、不够减做减法时,采用的是补码运算。
根据原码恢复余数法,当余数Ri>0时,可上商1,再对Ri左移一位后减除数,即2Ri–y。当余数Ri<0时,可上商0,然后再做Ri+y,即完成恢复余数的运算,再做左移和减除数,即2(Ri+y)-y,也即2Ri+y。因此,原码恢复余数法可归纳为当余数Ri>0时,商上1,做2Ri–y的运算;当余数Ri<0时,商上0,做2Ri+y的运算。这里已看不出余数的恢复问题了,而只是做加y或减y,因此,一般把它叫做加减交替法或不恢复余数法。
原码加减交替法所需的硬件配置如图2-9所示。
原码加减交替除法控制流程如图2-10所示。
原码除法的特点是符号位单独处理,上商的原则是余数为正上商1,余数为负上商0。共上商n+1次,移位n次。
(2)补码除法。符号位和数值部分一起参加运算。主要需解决如何确定商值、如何形成商的符号、如何获得新的余数三个问题。比较被除数(余数)和除数的大小。操作数都为补码,不能简单地用[x]补(或余数[Ri]补)减去[y]补。实质上是比较它们所对应的绝对值的大小,具体如表2-6所示。
表2-6 补码加减交替法运算规则
比较[x]补与[y]补的符号 | 求 余 数 | 比较 [Ri]补与[ y]补的符号 |
同号 | [x]补-[y]补 | 同号,表示够减 |
异号 | [x]补+[y]补 | 异号,表示够减 |
关于"最后阶段,真题的正确打开方式_备考经验_考研帮"有15名研友在考研帮APP发表了观点
扫我下载考研帮
最新资料下载
2021考研热门话题进入论坛
考研帮地方站更多
你可能会关心:
来考研帮提升效率