欢迎大家来到IT世界,在知识的湖畔探索吧!
上一期内容中,我们构建了一个8位的二进制加法器,那么举一反三,两个8位的二进制加法器一串连就成了一个16位的加法器,两个16位的加法器,一串连就是32位的加法器,几百位的加法器就是这样串联组成的。能够处理的数据也是非常大的。基本上,加法的问题就这样被解决了。
加法器的不断叠加
那么如何实现减法呢?
我们以十进制为例,举一个常见的例子
我们计算过程的第一步都是从右往左,先是从十位借位,个位的差变成7,然后十位再向百位借数,还要记得算上刚才被个位借过的1,于是十位的差就是15-1-7=7,百位相减,由于借位的存在,相减等于0,于是253-176=77。在减法的过程中,最麻烦的莫过于借位的存在。
有没有一种办法能够避开借位呢?总理曾经说过,办法总比困难多。想想也是,如果困难比办法多,那社会就无法向前发展,一直处于倒退中。
由于借位的存在,计算过程很是麻烦。为什么会出现借位呢,说到底还是被减数不够大,如果是三位数的减法,都是999减去一个数,那么任何数都是够减的。于是就想到一个办法,把式子稍做变换, 原来的式子就变成:
253-176+999-999
式子加一个数,再减去一个数,显然结果是不变的。对数的位置再进行挪动,
253+999-176-999
999足够大,任何三位数都可以相减得到正数,不存在借位的情况。
现在比较麻烦的是后面这个-999,它又是足够大,直接计算又免不了要进行借位操作,如果硬着头皮直接-999做减法,那么我们前面引入+999-999就又回到了原点,而且还是脱离裤子放屁,多此一举。那么怎么办呢?再做一次变化,让问题变得简单,于是就得到了:
253+(999-176)+1-1000,这样的话计算就方便多了。1000是比999高位的数。
走到这一步的时候,需要引入一个叫做补数的概念,999-176就是对176求9的补数,176对9的补数就是823,67对9的补数就是32,数与补数相加等于9,相信这个概念大家不难理解。
为了避开繁琐的借位操作,这里使用了两个减法和两个加法。总结一下计算的方法就是:
被减数-减数=被减数+减数的补数+1-高位数
如果是用二进制来作如上计算,又会是怎么样一种现象,原理上是一样的,不同只是计数的进制,按道理是不影响结果的。转换如下:
还是按照:被减数-减数=被减数+减数的补数+1-高位数的规律
首先对减数求补,这里我们没必要用到999,按照减数的位数,每个位置1再和减数相减,就是减数的补数。
0就是减数的补数。
减数与补数相加:
对结果再加1,
最后再减去一个高位数:
结果就是十进制的77,现在我们可以放心的说,总结的减法规律,对于十进制实用,对二进制同样实用。
在上面的过程中,有一个步骤很有意思,不知到大家有没有发现。在求减数的补数的时候,也就是:
单独观察下:
下面得到的结果实际就是上面的数的取反。0变成1,1变成0。对于二进制来说它有一个天然的优势,求补数就是取反。这时候,我们再稍加联想,想想我们之前遇到的逻辑门,非门就是可以用来取反。
如果我们把之前的加法器稍作变化,那么它就可以实现减法的计算应该不是太困难的问题。在我们的期望中,这个机器能做加法也能做减法,这就是典型的既要又要。
首先,我们需要增加一个信号,用作减法,也就是说减法不开启的时候,机器做加法计算,对其输入的信号就不做变化,只有当做减法时,才会对输入信号做变化,求补数。如果用上面提到的非门门取反,输入信号会无差别的翻转,不是我们想要的结果。于是,我们想办法找到了另外一个逻辑门,就是前面做半加器所提到的异或门。让我们回想下异或门的输出结果:
电路的连接如下:
只有当取反的信号被激活时,才会有取反的动作出现。
当取反信号是0时,输入是0,输出也是0,如果取反信号是1时,输入信号还是0,但是输出信号就变成了,取反生效。
把上面的8个异或门电路重新画成一个器件,就叫做“求补器”
将一个求补器,加法器,一个异或门连接做如下连接,
这就是一个完整的加减法计算机器。
当做加法时,SUB信号值0,这就是我们上节内容中的加法器。当SUB置1时,机器开始做减法。
还记得前面的减法规律吗:被减数+减数的补数+1-高位数
减数的补数
减数的补数就是在这里实现的。
+1的部分就是在CI那里实现的。
还有减去高位数呢:
减去高位数的操作
我们在看一下减去高位数的操作,
二进制计算中其实就是相当于把高位部分给抹掉了。在机器实现过程中,肯定不是人去手动抹掉,而是用了一个异或门。
不得不感慨这个计算机减法的实现过程真的是巧妙之极,为人类的智慧点赞。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/83746.html