这件事主要源于CSDN上的这篇文章:莫斯科国立大学三进制计算机发展史 。阅读后就猜想对于三进制计算机的逻辑运算是如何处理的呢?
在二进制计算机中,基本的逻辑计算有:“与”,“或”和“非”。下面分别用AND、OR、NOT来表示。
0 AND 0 = 0 0 OR 0 = 0 NOT 0 = 1
0 AND 1 = 0 0 OR 1 = 1 NOT 1 = 0
1 AND 0 = 0 1 0R 0 = 1
1 AND 1 = 1 1 OR 1 = 1
上述文章中描述说,三进制主要根据电压值的正、负和零进行判定,值分别被表示为:1,-1和0。那么在这种情况下的逻辑计算又是怎样的呢?
以下是我列出的计算法则:
0 AND 0 = 0 0 OR 0 = 0 NOT 0 = 0
0 AND 1 = 0 0 OR 1 = 1 NOT 1 = (-1)
1 AND 0 = 0 1 0R 0 = 1 NOT (-1) = 1
1 AND 1 = 1 1 OR 1 = 1
(-1) AND 0 = (-1) (-1) OR 0 = 0
(-1) AND 1 = (-1) (-1) OR 1 = 1
(-1) AND (-1) = (-1) (-1) OR (-1) = -1
上述真值表对DeMorgen定律仍然成立:
对于任意两个三进制数A和B:
NOT (A AND B) (NOT A) OR (NOT B)
0 0 0 0 0 0 0
0 1 0 0 -1 0 0
1 -1 -1 0 1 1 0
1 -1 -1 -1 1 1 1
同样,可以证明NOT(A OR B) == (NOT A) AND (NOT B),此证明略。
通过列出三进制真值表,我们可以看到非常有意思的逻辑现象:
AND运算是得出两个数中最小的那一个;OR运算是得出两个数中最大的那一个;而NOT运算是获得另一个数,使得该数与源操作数正好互为两个极值(峰值)。