首先我们从数学上解释一下
学了计算机电路就知道了。计算器内部主要是通过异或门来实现加法运算的。
逻辑无非就这几种:非门(NOT)、与门(AND)、或门(OR)、异或门(XOR),其中非门还可以和另外三个进行组合。加法主要是靠异或门实现的。
计算机内部为了计算方便,一律用二进制的形式表示数据,二进制是“逢二进一”的,只有 0 和 1 两个数字。逻辑上一般把 0 称为逻辑假,把 1
称为逻辑真。计算机内部的加法也只有四条规则:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10(进位位 C 为 1,结果位为 0)
而这个规则正是使用异或门实现的。异或门(A XOR B)是指:只有 A 和 B 的状态为一真一假时,才返回真。若 A 和 B
同时为真或者同时为假,则返回假。那么你看看,上面的四条加法规则,是不是完全满足异或门的定义?
对于进位位,我们都学过加法算式的竖式吧。类似于加法竖式,在进位位为 1
的数位上,是要再加上进位位的数的。计算机中的【加】,其实是逻辑异或。那么问题来了,原先的两个数,加上进位位,一共三个数,怎么进行异或运算(A XOR B XOR
C)?
我们知道,数学上的四则运算是有优先级的,先乘除后加减。其实逻辑多项式运算上也同样有优先级,一般认为 NOT > AND > OR >
XOR。对于同级运算,其实可以使用结合律,即:A XOR B XOR C = ( A XOR B ) XOR C = A XOR ( B XOR C
)。这样是不是就可以理解了?
而且,多试几次,你会发现一个规律:任意 n 个(n ≥
2)逻辑量进行异或运算,若其中有奇数个逻辑真,则最终结果为逻辑真;若其中有偶数个逻辑真,则最终结果为逻辑假。
这样,一个简单的加法器就出来了。我们可以试试(假设是一个八位二进制的加法器),比如 23 + 44 = ?
23 的二进制为 00010111
44 的二进制为 00101100
运算的结果是二进制的 01000011,换算成十进制是 67,完全正确。
计算器的加法原理就这么多,其余的减法、乘法、除法什么的也是在加法器的原理上进行改装的,在这里就不说太多了。
接下来要讲几个门电路
一、或门:
先说说这个图,
开关e1 e2任意一个按下(任一个为1)或者两个都按下(两个都等于1)灯都会亮(等于1),是吧,我们把这个电路叫 或门。
抽象一下,如下图:
他们都逻辑如下表
二、与门,
网上没有找到开关图,自己画一个,
只有s1 s2同时按下(都为1)的时候,灯才会亮(为1)
抽象如下:
逻辑如下;
三、与非门
当s1 s2同时按下(等于1)的时候,Q才是和地线连通的(等于0),s1 s2任何一个断开(任何一个等于0)的时候q都是高电平(等于1)。
这个叫 与非门
抽象一下,如下图:
逻辑如下表:
然后我们有个电路图如下:
就是把上面三个门都使用上的一个电路
我们叫 异或门
抽象如下图表示:
逻辑表为:
对照前面三个门电路应该能理解把。。
然后现在大招来了,
再看这个图:
就是一个异或门和一个与门组合,这个叫半加器,这就是一个可以算1+1=2的电路了,逻辑如下:
其中 A B为两个加数,c是进位,s是结果。
也就是表示0+0=0进位为0
0+1=1进位为0
1+0=1进位为0
1+1=0进位为1,也就是十进制中的2.
为什么叫半加器呢?因为它没接受前一次加法的进位。
两个半加器构成一个全加器。
很复杂是吧?但是也很有趣,不是么?