了解了门,我们就可以做一些实际应用了,计算机的主要目的是计算,而门可以用于计算,所以可以说计算机是由各种不同的门组成。接下来我们要做的就是做一个二进制加法器,因为如果做出加法器,就可以扩展为减法,乘法,除法。而我们如何实现加法器呢?我们这次只使用一些很常见、并且有些落后的部件完成:开关、灯泡、导线、电池、门。
输入为开关,输出为一排灯泡,亮表示1,灭表示0。如果二进制串进行加法,我们肯定会想到一位一位进行加法运算,因此如果有8位二进制数,我们就要分8部运算。通过尝试可以知道,只有当输入为两个1时,进位位才为1,因此符合与门特性,而当输入为两个1或两个0时,加法位才会为0.这个符合异或特性。异或我们怎么用最基本的逻辑门表示呢?我们可以通过两个与非门,一个或门构成。这样就构成了一个半加器。
称为半加器的目的是因为我们没有考虑低位的进位问题,如果考虑了,我们就称为全加器。而全加器是由2个半加器和一个或门组成。
接下来我们谈谈一共要用多少个继电器:
进位位是与门,所以由2个继电器组成。
加法位是一个或门,一个与非门,一个与门组成,所以由6个继电器。
半加器由进位位和加法位组成,则有8个继电器。
全加器由两个半加器和一个或门组成,则有18个继电器。
我们有了全加器,则可以通过级联组成一个二进制串的加法。
但是现在计算机使用的是晶体管,所以需要将继电器换成晶体管。
我们前面实现了加法器,如同我们所说,减法是加法的扩展,所以实现了加法器,只需要稍作修改,就能实现减法,而减法最烦人的就是借位,因此我们就想是否有方法能够避免借位呢?
答案是有的,
(1)当被减数>减数时,设被减数为x,减数为y,假设x和y都是三位十进制数,只需要将x-y=x+(999-y)+1-1000,这个式子看起来很普通,但是就能避免借位问题。因为999-y不可能发生借位,其他的步骤也不可能。
(2)当被减数<减数时,x-y=-(999-(x+(999-y))),这样也能避免借位。
这里我们实现的是二进制的减法,所以类似于上面,
(1)当被减数>减数时,x-y=x+(111-y)+1-1000.
(2)当