【计算机组成】定点数的除法运算
定点数的除法运算
本篇文章:
本文主要是关于计算机中定点数除法的一些知识点,请多多指教。
本文探索:
- 笔算除法是怎么做的?
-
如何使用计算机硬件来模拟笔算除法的过程?
- 恢复余数法
- 不恢复余数法(加减交替法)
内容如下:
一、分析笔算除法
这个大家应该可以看得懂!!!
二、笔算除法和机器除法比较:
三、原码除法:
-
约定:
- 在小数定点机中,如果进行除法,除数如果大于“1”的话就会溢出,直接结束除法计算
- 除数为“0”,直接报出异常
四、恢复余数法:
大家看到这里肯定是一头雾水,大家来看下面这个实例,就会懂很多了!!!!!
-
注意:
- 符号位单独进行运算,进行的是数值位的运算
-
- 上商5次:每上一次商,都需要判断一次余数是否溢出。如果余数减去除数大于0,商“1”,然后余数逻辑左移1位,继续判断;如果余数减去除数小于0,余数需要加上减去的除数,商“0”,逻辑左移1位,然后继续判断;最后得到被除数和除数相等的位数即停止。
- 移位4次:商每在最低位加1位,就需要左移1位,商总共移动4次;被除数需要逻辑左移4次
五、不恢复余数法:
现在我们一起来看下定点数除法中的不恢复余数法和恢复余数法的区别!!!!!
很懵!!很懵!!让我们来看一个不恢复余数的实例:
不恢复余数的流程如下:
由于不知道商的值,所以第一位需要判断数据是否溢出
所以:
第一步:被除数+[ - y*]补,判断得:余数小于“0”,所以商“0”,余数逻辑左移“1”位,:
第二步:因为商为“0”,所以余数+[ y*]补,判断得:余数大于“0”,所以商“1”,余数逻辑左移“1”位
第三步:因为商为“1”,所以余数+[ - y*]补,判断得:余数大于“0”,所以商“1”,余数逻辑左移“1位
第四步:因为商为“1”,所以余数+[ - y*]补,判断得:余数小于“0”,所以商“0”,余数逻辑左移“1”位
第五步:因为商为“0”,所以余数+[ y*]补,判断得:余数大于“0”,所以商“1”,得到最后的商
结果:
特点:
- 上商的次数需要根据数值位的位数进行判断,上商的次数是数值位数+1
- 第一次上商是判断是否溢出,当第一次的商为“1”的时候,发生溢出
- 余数(被除数)需要移位n次,商也需要移位n次,移位后的余数需要进行n+1次加法
- 用移位的次数判断除法是否结束
不恢复余数法(加减交替法)硬件要求:
A:被除数(余数)寄存器,还需要有移位的功能
X:除数寄存器
Q:商寄存器,也需要有移位的功能
作者:文小白