在上一篇文章中,咱们主要讲述了定点数的加、减、乘运算,惟独没有讲解除法运算。缘由有两个,一来上一篇文章的内容确实比较多,二来除法运算比乘法相对复杂。
因此,本文将从除法的来历讲起,而后讲除法运算的几种方法。微信
咱们来看这样一个例子:在8位寄存器中存储了00000111,4位寄存器中存储了0010,计算00000111/0010。
回想一下,咱们整数的除法是怎么作的?如上面的数改写成十进制,即7/2的结果是多少呢?
咱们确定是先列出一个除法式子,像下面这样。设计
咱们首先是判断一下,当前被除数7中有几个除数,有几个则商就上几个,而后被除数减去除数乘商获得余数,接着判断余数中有几个除数,直到除不开为止。若是发现商是0,则被除数补0,除数向右移动一位,继续计算。
在7中有3个2,结果是余1,1中不存在2,这就是最终的结果。
接着看一下上面的例子:咱们要作的,确定是先列出一个式子。3d
和整数除法同样,两个二进制数之间的除法一样的。步骤以下:cdn
大致上的过程就是这样的。根据上述的过程,咱们可以很容易的设计出基本的除法器。此外,要注意的是,除法器应该具备判断除数或者被除数是否为0的功能,由于被除数为0时结果为0,没有意义;而除数为0时,结果为无穷大,没法表示。blog
在了解了除法器的基本状况后,咱们就来说除法运算的两种方法。分别是:恢复余数法、加减交替法。it
从名字中能够看出,这种方法对余数作了某种恢复。为何会出现这种恢复呢?缘由很简单,咱们在分析通常除法的过程当中能够看到,若是除数和被除数当前对齐的位上,被除数有0个除数,此时咱们就须要将被除数补0。可是计算机并不知道被除数是否够除除数(由于无论除数和被除数的状况如何,最后的商上的位,不是0就是1),就须要先用被除数减去除数,若是发现余数是小于0的,那么计算机就知道了此时对齐的位没法获得最终的结果,则将被除数向又移动一位。这就是恢复余数法的核心思想。固然,咱们在直接计算的时候,须要将两个数的绝对值相除,再获得最终的结果。
接下来咱们就来看,恢复余数法到底是如何运算的。io
加减交替法也称做不恢复余数法。为啥呢,由于在加减交替法中,先让被除数减除数,若是结果为正,则上1,;若是结果为负,则加上除数。接着将被除数向作移动一位。不过你要是细看的话,这两种方法其实并无太大的区别,本身好好体会一下就好了。
下面看个例子:class
本节是承接定点数的计算方法的,下一节,咱们将开始计算机的运算方法后半部分的内容,即浮点数的计算过程,内容并很少,因此会放到一篇文章中。
若是你喜欢个人文章,欢迎关注个人微信公众号:最高权限比特流。原理