在上一篇博文中我们用基本的逻辑门实现了8位二进制数的加法器,本文主题是在上文中加法器的基础上实现8位二进制减法器功能。
加法和减法在某些方面互相补充,但在机制方面这两种运算并不同。加法中会涉及到进位,减法中没有进位,而是借位--一种与加法存在本质区别的麻烦机制。下面我们先从十进制的减法开始,逐渐过渡到二进制的减法。
先看一个例子:253-176=??
当我们解决一个问题时,如果能用到我们已经知道的知识,那么问题解决起来就会快捷;然而如果要研究出一种新的方法,这固然很好,但是这往往并不是一种最有效的途径。这里用一个小技巧来让减法不涉及到借位(先说明过程然后解释原因),由于减法与计算机中以二进制编码的存储有关,详细地了解减法也很重要。
为了避免借位,我们从一串9中减去减数(在上例中是999,因为减数是176,三位),即999-176=823。我们称从一串9中减去一个数叫做对9求补数,上例中176对9的补数是823,反之823对9的补数是176。这样就不需要借位。
然后将补数加1,并与原来的被减数相加,即823+1+25

本文介绍了如何在已有的8位二进制加法器基础上实现减法器功能。通过十进制和二进制的减法规则,讨论了如何避免借位,并通过取反和加1的方法简化减法操作。最后,文章展示了如何通过加法器和求补器配合,根据sub位切换加法和减法模式,实现二进制减法器。
最低0.47元/天 解锁文章
1864

被折叠的 条评论
为什么被折叠?



