本文主要是介绍定点数除法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
定点数除法
- 一,手工除法运算方法
- 二,原码除法运算方法
- 三,原码加/减交替除法运算方法(不恢复余数法)
- 四,原码加/减交替除法实现逻辑
- 五,阵列除法
一,手工除法运算方法
图 1 图1 图1
二,原码除法运算方法
图 2 图2 图2
图 3 图3 图3
图 4 图4 图4
由于运算步数不确定,这样设计电路的缺陷是电路复杂,难以控制。
三,原码加/减交替除法运算方法(不恢复余数法)
图 5 图5 图5
如图五,我们发现可以不恢复余数直接将其左移再加Y得到的结果也是4Ri-Y,这样我们就可以确定运算步数了,看图6就可以理解了。
图 6 图6 图6
根据改进的方法,如果余数小于零,商上零,下一步操作就是左移+[Y]补,得到的余数若大于零,就-[Y]补(+[-Y]补),这样每一步就能上商,也就能确定步数了,而且也简介得多。
四,原码加/减交替除法实现逻辑
图 7 图7 图7
五,阵列除法
图 8 图8 图8
图8中间的小虚线框为全加器FA,通过外面虚线框的改进,成为了可控加/减法(CAS)单元,可实现加法和减法。
图 9 图9 图9
我们从第一排开始,因为第一步一定是减法(这个肯定想得到吧),所以p=1,然后这个p到最右边有个拐角直接连在进位位上(因为减法的话需要将减数变为补码,所以取反后需要进位位加一,这个设计很巧妙,如果是加法,P=0,就不会进位),除数(Y)与被除数(X)相减,最左边的CAS的进位输出是商,且本位商决定下一步是执行加操作还是减操作,执行完一排后,就将被除数左移一位(CAS斜着连实现,也可以理解为除数右移一位),最后最左边的进位输出Q1,Q2,Q3…就是商,各R就是余数。
参考文献:https://www.icourse163.org/course/HUST-1003159001
非常感谢秦磊华老师的讲解,侵权删
这篇关于定点数除法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!