【从与非门到计算机】第二话 补码与减法器
上回说到,我们制作出了16位加法器。现在,我们要进一步做出第二简单的运算:减法。
我们小学就学过A-B=A+(-B),所以只需要一个取相反数的逻辑电路就行了。
然而我们的16位二进制数只能表示0到65535的整数。怎么办呢?
要知道,在运算中,超过16位的部分会被舍弃,称为溢出。这使得两个大数相加可能会得到较小的数,找到一个数的相反数也就有了可能。那么试着找一下5的相反数吧!
首先,写出5的二进制形式:0000000000000101
然后,将16位全部取反:1111111111111010,这样两数加起来就是1111111111111111了。、
最后,为了两数加起来为0,我们需要用到溢出了。只需要在取反的结果上加1,就可以了。
所以:0000000000000101的相反数是1111111111111011。
等等,上面的数不是65531吗?为什么是-5呢?
这是因为这里使用的是补码系统,只能表示-32768到32767的整数,所以65531这样的数就表示负数啦~

为了做减法器首先,我们将16位加法器改成集位线输入输出:

封装起来:

接着做一个自增1的电路:

然后封装起来:

于是就可以快乐地做减法器啦~

封装一下:

于是我们的减法器就做好了。在下一话,我们将会讲选择器和多路复用器的制作。