跳转至

逻辑运算#
发布于2021-04-18
上次编辑2021-04-18

基本运算#

逻辑运算 含义 逻辑表达式 运算符
A AND B \(F = A \cdot B\) a & b
A OR B \(F = A + B\) a|b
NOT A \(F = \bar{A}\) !a
异或 A XOR B \(F = \bar{A}B + A\bar{B} = A \oplus B\) a ^ b
同或 A XNOR B \(F = AB + \bar{A}\bar{B} = A \odot B =\overline{A\oplus B}\)

基本公式#

运算法则
交换律 \(A+B=B+A\) \(AB=BA\)
结合律 \(A+(B+C)=(A+B)+C\) \(A(BC)=(AB)C\)
分配律 \(A(B+C)=AB+AC\) \(A+(BC)=(A+B)(A+C)\)
吸收律 \(A+AB=A\) \(A(A+B)=A\)
0-1 \(A+1=1,A+0=A\) \(A\cdot1=A,A\cdot0=0\)
互补律 \(A+\bar{A}=1\) \(A\cdot\bar{A}=0\)
重叠律 \(A+A=A\) \(AA=A\)
反演律 \(\overline{A+B}=\bar{A}\cdot\bar{B}\) \(\overline{AB}=\bar{A}+\bar{B}\)
包含律 \(AB+\bar{A}C+BC=AB+\bar{A}C\) \((A+B)(\bar{A}+C)(B+C)=(A+B)(\bar{A}+C)\)

分配律:

与运算对异或运算的分配律

\[ \begin{aligned} (AB) \oplus (AC) &= \overline{AB}AC + AB\overline{AC} \\ &=(\bar{A}+\bar{B})AC + AB(\bar{A}+\bar{C}) \\ &=A\bar{B}C+AB\bar{C}\\ &=A(\bar{B}C+B\bar{C}) \\ &=A(B \oplus C) \end{aligned} \]

或运算对异或运算的分配律 (不满足)

\[ \begin{aligned} (A+B)\oplus(A+C) &= \overline{A+B}(A+C) + (A+B)\overline{A+C} \\ &=\bar{A}\bar{B}(A+C) + (A+B)\bar{A}\bar{C} \\ &=\bar{A}\bar{B}C+\bar{A}B\bar{C} \\ &=\bar{A}(\bar{B}C+B\bar{C}) \\ &=\bar{A}(B \oplus C) \neq A + (B \oplus C) \end{aligned} \]
\[ \begin{aligned} \overline{\bar{A}(B \oplus C)} &= A + \overline{B \oplus C}=A+ B\odot C \end{aligned} \]

真值表#

\[ \begin{array}{|c|cccccccc|} \hline & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\ \hline A & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\ B & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\ C & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\ \hline \bar{A} & 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\ \bar{B} & 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\ \bar{C} & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\ \hline AB & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\ AC & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 \\ BC & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 \\ \hline A + B & 0 & 0 & 1 & 1 & 1 & 1 & 1 & 1 \\ A + C & 0 & 1 & 0 & 1 & 1 & 1 & 1 & 1 \\ B + C & 0 & 1 & 1 & 1 & 0 & 1 & 1 & 1 \\ \hline A\oplus B & 0 & 0 & 1 & 1 & 1 & 1 & 0 & 0 \\ A\oplus C & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 \\ B\oplus C & 0 & 1 & 1 & 0 & 0 & 1 & 1 & 0 \\ \hline A(B+C) & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 \\ AB+AC & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 \\ \hline A(B\oplus C) & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 \\ (AB)\oplus(AC) & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 \\ \hline A+(BC) & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 \\ (A+B)(A+C) & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 \\ \hline A+(B\oplus C) & 0 & 1 & 1 & 0 & 1 & 1 & 1 & 1 \\ (A+B)\oplus(A+C) & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 0 \\ \hline A\oplus(BC) & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 \\ (A\oplus B)(A\oplus C) & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 \\ \hline A\oplus(B+C) & 0 & 1 & 1 & 1 & 1 & 0 & 0 & 0 \\ (A\oplus B)+(A\oplus C) & 0 & 1 & 1 & 1 & 1 & 1 & 1 & 0 \\ \hline \end{array} \]
代码
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
p = [[0] * 8 for _ in range(3)]
for i in range(8):
    for j in range(3):
        p[2 - j][i] = (i >> j) & 1

A, B, C = p


def S(A):
    return " & ".join(map(str, A))


def Not(A):
    return list(map(lambda x: x ^ 1, A))


def And(A, B):
    return list(map(lambda x: x[0] & x[1], zip(A, B)))


def Or(A, B):
    return list(map(lambda x: x[0] | x[1], zip(A, B)))


def Xor(A, B):
    return list(map(lambda x: x[0] ^ x[1], zip(A, B)))


s = f"""
$$
\\begin{{array}}{{|c|cccccccc|}}
\\hline
  & {S(range(8))} \\\\
\\hline
A & {S(A)} \\\\
B & {S(B)} \\\\
C & {S(C)} \\\\
\\hline
\\bar{{A}} & {S(Not(A))} \\\\
\\bar{{B}} & {S(Not(B))} \\\\
\\bar{{C}} & {S(Not(C))} \\\\
\\hline
AB & {S(And(A, B))} \\\\
AC & {S(And(A, C))} \\\\
BC & {S(And(B, C))} \\\\
\\hline
A + B & {S(Or(A, B))} \\\\
A + C & {S(Or(A, C))} \\\\
B + C & {S(Or(B, C))} \\\\
\\hline
A\\oplus B & {S(Xor(A, B))} \\\\
A\\oplus C & {S(Xor(A, C))} \\\\
B\\oplus C & {S(Xor(B, C))} \\\\
\\hline
A(B+C) & {S(And(A, Or(B, C)))} \\\\
AB+AC & {S(Or(And(A, B), And(A, C)))} \\\\
\\hline
A(B\\oplus C) & {S(And(A, Xor(B, C)))} \\\\
(AB)\\oplus(AC) & {S(Xor(And(A, B), And(A, C)))} \\\\
\\hline
A+(BC) & {S(Or(A, And(B, C)))} \\\\
(A+B)(A+C) & {S(And(Or(A, B), Or(A, C)))} \\\\
\\hline
A+(B\\oplus C) & {S(Or(A, Xor(B, C)))} \\\\
(A+B)\\oplus(A+C) & {S(Xor(Or(A, B), Or(A, C)))} \\\\
\\hline
A\\oplus(BC) & {S(Xor(A, And(B, C)))} \\\\
(A\\oplus B)(A\\oplus C) & {S(And(Xor(A, B), Xor(A, C)))} \\\\
\\hline
A\\oplus(B+C) & {S(Xor(A, Or(B, C)))} \\\\
(A\\oplus B)+(A\\oplus C) & {S(Or(Xor(A, B), Xor(B, C)))} \\\\
\\hline
\\end{{array}}
$$
"""

print(s)

数字电路.pdf

返回顶部

在手机上阅读