这些编码和卡诺图先放在同一条主线里理解
这一部分本质上属于数字逻辑与计算机组成原理中的“信息编码”和“逻辑函数化简”。其中有权码、8421BCD码、余三码、格雷码、奇偶校验码都是“编码方式”;卡诺图化简不是编码,而是对逻辑函数进行化简的方法。
它们之间大致可以这样分类:
| 内容 | 本质 | 是否表示数值 | 是否用于检错 | 考研常见考法 |
|---|---|---|---|---|
| 有权码 | 每一位有固定权值的编码 | 是 | 否 | 判断编码值、判断是否为有权码 |
| 8421BCD码 | 最常见的有权BCD码 | 是,按十进制数字编码 | 否 | 十进制数和BCD码互转 |
| 余三码 | 8421BCD码加3形成的无权码 | 是,按十进制数字编码 | 否 | 与8421BCD码互转、自补特性 |
| 格雷码 | 相邻编码只差一位的无权码 | 可表示序号 | 否 | 二进制码与格雷码互转 |
| 奇偶校验码 | 增加校验位形成的检错码 | 主要不是表示数值 | 是 | 求校验位、判断能否检错纠错 |
| 卡诺图 | 逻辑函数化简工具 | 不是编码 | 否 | 根据真值表/最小项化简表达式 |
其中最容易混淆的是:8421BCD码不是普通二进制数;余三码不是有权码;格雷码不是按普通二进制加1变化;奇偶校验码只能检错,不能定位错误;卡诺图的行列排列使用格雷码顺序,而不是普通二进制顺序。
一、有权码:每一位都有固定“权值”的编码
有权码的核心特点是:编码中每一位都有固定的权值,一个编码所表示的数值等于各位代码值与对应权值的乘积之和。
例如 8421码中,四位的权值分别是:
8 4 2 1
如果某一位为1,就取该位权值;如果为0,就不取该位权值。
比如:
0101
在8421码中表示:
0×8 + 1×4 + 0×2 + 1×1 = 5
所以 0101 表示十进制数字5。
注意,这里的“有权”不是指“重要”,而是指“每一位有固定权重”。常见有权码包括:
8421码
2421码
5421码
余3循环码中的某些变体
但考研中最常见的就是8421BCD码。
判断一个码是不是有权码,关键看是否能为每一位固定分配一个权值,并且任意一个合法编码都能通过“按位加权求和”的方式得到对应十进制数。
比如8421BCD码是有权码;余三码不是有权码;格雷码也不是有权码。
二、8421BCD码:用4位二进制编码表示1位十进制数
BCD码的全称是 Binary Coded Decimal,即“二进制编码的十进制数”。它不是把整个十进制数直接转换成二进制,而是把每一位十进制数字分别用4位二进制编码表示。
8421BCD码是最常见的BCD码,它用4位二进制码表示十进制数字0到9。
| 十进制数字 | 8421BCD码 |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
因为4位二进制本来可以表示0到15,但是BCD码只需要表示十进制数字0到9,所以:
1010、1011、1100、1101、1110、1111
在8421BCD码中属于非法编码。
这是408和数字逻辑题里非常容易考的点。
例如十进制数59的8421BCD码不是把59整体转成二进制。
如果把59整体转成二进制,是:
59 = 111011₂
但59的8421BCD码要按十进制位分别编码:
5 -> 0101
9 -> 1001
所以:
59的8421BCD码 = 0101 1001
再比如十进制数2026的8421BCD码是:
2 -> 0010
0 -> 0000
2 -> 0010
6 -> 0110
所以 2026 = 0010 0000 0010 0110
这里一定要区分“普通二进制数”和“BCD码”。
普通二进制数是整体转换,例如:
13₁₀ = 1101₂
而BCD码是逐位转换:
13₁₀ = 0001 0011(BCD)
这两个结果完全不同。
考研中常见陷阱就是把BCD码误当成普通二进制数。
三、余三码:在8421BCD码基础上每位加3
余三码又叫 Excess-3 Code,它是一种无权码。它的形成方法很简单:
某个十进制数字的余三码 = 该数字的8421BCD码 + 0011
也就是每一位十进制数字都加3后,再写成4位二进制。
例如十进制数字5:
5的8421BCD码 = 0101
加3:0101 + 0011 = 1000
所以5的余三码 = 1000
余三码表如下:
| 十进制数字 | 8421BCD码 | 余三码 |
|---|---|---|
| 0 | 0000 | 0011 |
| 1 | 0001 | 0100 |
| 2 | 0010 | 0101 |
| 3 | 0011 | 0110 |
| 4 | 0100 | 0111 |
| 5 | 0101 | 1000 |
| 6 | 0110 | 1001 |
| 7 | 0111 | 1010 |
| 8 | 1000 | 1011 |
| 9 | 1001 | 1100 |
例如十进制数59的余三码:
5 -> 8421BCD为0101,加0011,得到1000
9 -> 8421BCD为1001,加0011,得到1100
所以59的余三码 = 1000 1100
余三码最常考两个点。
第一个点是:余三码不是有权码。虽然它也是4位编码表示1位十进制数字,但是不能像8421码那样用固定权值直接加权求值。
第二个点是:余三码具有自补性。所谓自补性是指,一个十进制数字d的余三码按位取反后,会得到9 – d的余三码。
例如:
2的余三码 = 0101
按位取反 = 1010
1010正好是7的余三码
而 9 - 2 = 7
再比如:
4的余三码 = 0111
按位取反 = 1000
1000正好是5的余三码
而 9 - 4 = 5
这个性质在十进制补码运算、数字电路编码题中偶尔会考。
四、格雷码:相邻两个编码只有一位不同
格雷码的核心特征是:
相邻两个编码之间只有1位不同
这和普通二进制码不一样。
普通二进制数从3变到4时:
3 = 011
4 = 100
三位全部发生变化。
而格雷码要求相邻状态变化时只改变一位,这样可以减少机械编码、异步采样、电路状态转换中的误判。
常见3位二进制码与格雷码对应关系如下:
| 十进制 | 二进制码 | 格雷码 |
|---|---|---|
| 0 | 000 | 000 |
| 1 | 001 | 001 |
| 2 | 010 | 011 |
| 3 | 011 | 010 |
| 4 | 100 | 110 |
| 5 | 101 | 111 |
| 6 | 110 | 101 |
| 7 | 111 | 100 |
可以看到,从上到下相邻格雷码只变化一位:
000 -> 001 -> 011 -> 010 -> 110 -> 111 -> 101 -> 100
1. 二进制码转格雷码
规则是:
格雷码最高位 = 二进制码最高位
格雷码其余各位 = 二进制码相邻两位异或
也可以写成:
Gₙ = Bₙ
Gᵢ = Bᵢ₊₁ ⊕ Bᵢ
其中 ⊕ 表示异或:相同为0,不同为1。
例如二进制码 1011 转格雷码。
先写二进制码:
B = 1 0 1 1
格雷码最高位等于二进制最高位:
G最高位 = 1
后面逐位异或:
1 ⊕ 0 = 1
0 ⊕ 1 = 1
1 ⊕ 1 = 0
所以:
1011的格雷码 = 1110
2. 格雷码转二进制码
规则是:
二进制最高位 = 格雷码最高位
二进制后续每一位 = 前一位二进制位 ⊕ 当前格雷码位
例如格雷码 1110 转二进制码。
G = 1 1 1 0
最高位:
B最高位 = 1
后面依次算:
B第2位 = 1 ⊕ 1 = 0
B第3位 = 0 ⊕ 1 = 1
B第4位 = 1 ⊕ 0 = 1
所以:
1110(格雷码) = 1011(二进制码)
这类题最容易错在“格雷码转二进制”时直接相邻异或。注意,二进制转格雷码是“原二进制相邻位异或”;格雷码转二进制是“前面已经求出的二进制位与当前格雷码位异或”。
3. 格雷码和卡诺图的关系
卡诺图的行、列编号通常按格雷码顺序排列。
比如二变量列标不是:
00 01 10 11
而是:
00 01 11 10
原因就是卡诺图要求相邻格子只差一个变量,这样才能把相邻最小项合并化简。
五、奇偶校验码:用1位校验位检测错误
奇偶校验码是一种最简单的检错码。它在原始数据后面增加一个校验位,使整个码字中1的个数满足某种奇偶性要求。
分为两种:
偶校验:整个码字中1的个数为偶数
奇校验:整个码字中1的个数为奇数
例如原数据为:
1011001
其中1的个数是4个。
如果采用偶校验,那么总的1的个数已经是偶数,所以校验位应为0:
1011001 0
如果采用奇校验,那么总的1的个数需要变成奇数,所以校验位应为1:
1011001 1
再比如原数据为:
1001101
其中1的个数是4个。
偶校验位为0,奇校验位为1。
如果原数据为:
1001111
其中1的个数是5个。
偶校验时,需要让总的1的个数变成偶数,所以校验位为1:
1001111 1
奇校验时,总的1的个数已经是奇数,所以校验位为0:
1001111 0
奇偶校验码的核心考点是它的检错能力:
能检测出奇数位错误。
不能检测出偶数位错误。
不能纠正错误。
例如采用偶校验时,原来整个码字中1的个数应该为偶数。如果传输过程中有1位发生错误,那么1的个数奇偶性一定改变,接收端可以发现错误。
但如果有2位同时出错,1的个数奇偶性可能不变,接收端就可能发现不了。
所以奇偶校验码只能判断“是否可能出错”,不能判断“哪一位错了”,也不能自动纠正错误。
这个地方经常和海明码混淆。海明码可以定位并纠正一位错误;普通奇偶校验码只能检错,不能纠错。
六、卡诺图化简:把相邻最小项合并,消去变化变量
卡诺图,也常被误写成“卡洛图”,标准名称是卡诺图。它是逻辑函数化简的一种图形化方法,主要用于2变量、3变量、4变量逻辑函数化简。变量再多时也可以用,但图形会变复杂,考研中常见还是2到4变量。
卡诺图的本质是利用逻辑代数中的吸收合并关系:
AB + AB' = A
因为B和B’只差一个变量,一个为1,一个为0,合并后这个变化变量可以消去。
卡诺图就是把只差一个变量的最小项放在相邻格子里,然后通过圈相邻的1来化简表达式。
1. 卡诺图为什么用格雷码排列?
以4变量函数F(A,B,C,D)为例,卡诺图通常把AB作为行,CD作为列。行列顺序都要按格雷码排列:
00 01 11 10
而不是普通二进制顺序:
00 01 10 11
原因是卡诺图要求相邻格子只差一个变量。
如果列按:
00 01 11 10
那么相邻列之间只变一位:
00 -> 01:只变D
01 -> 11:只变C
11 -> 10:只变D
10 -> 00:只变C,注意边界也相邻
所以卡诺图的左右边界、上下边界也是相邻的。这是卡诺图题中非常重要的易错点。
2. 卡诺图化简的基本规则
卡诺图化简时,一般是“圈1”求最简与或式。
基本规则如下:
1. 所有的1都要被圈住。
2. 每个圈中的格子数必须是2的幂:1、2、4、8、16……
3. 圈必须是矩形或正方形,不能斜着圈,不能随意折线圈。
4. 圈越大越好,因为圈越大,能消去的变量越多。
5. 圈可以重叠,只要有助于得到更简表达式。
6. 边界可以相邻,左边和右边能连,顶部和底部也能连。
7. 无关项X可以圈,也可以不圈,原则是有利于化简就圈,不利于化简就不圈。
从圈中读表达式时,原则是:
变化的变量消去,不变的变量保留。
如果某变量在圈内一直为1,则保留原变量;如果一直为0,则保留反变量;如果有时为0有时为1,则消去。
3. 三变量卡诺图例子
假设逻辑函数:
F(A,B,C) = Σm(1,3,5,7)
最小项编号按ABC从000到111排列:
m0 = 000
m1 = 001
m2 = 010
m3 = 011
m4 = 100
m5 = 101
m6 = 110
m7 = 111
题目给的是:
m1 = 001
m3 = 011
m5 = 101
m7 = 111
观察这些最小项:
001
011
101
111
可以发现A有时为0,有时为1;B有时为0,有时为1;但C始终为1。
所以化简结果为:
F = C
如果用卡诺图来圈,就是把所有C=1的格子圈成一个4格大圈。圈越大,消去变量越多。本题4个格子合并后,A和B都被消去,只剩C。
4. 四变量卡诺图例子
假设:
F(A,B,C,D) = Σm(0,1,2,3,8,9,10,11)
把这些最小项写成ABCD:
m0 = 0000
m1 = 0001
m2 = 0010
m3 = 0011
m8 = 1000
m9 = 1001
m10 = 1010
m11 = 1011
观察这些项:
A有时为0,有时为1
B始终为0
C有时为0,有时为1
D有时为0,有时为1
因此只有B保持为0,所以化简结果是:
F = B'
在卡诺图上看,就是B=0的8个格子可以圈成一个大圈。一个8格圈可以消去3个变量,只剩1个变量。
这就是卡诺图的核心:不是机械画图,而是找哪些变量在圈内不变。
七、几个编码之间的典型对比
1. 8421BCD码和普通二进制码的区别
例如十进制数25。
普通二进制转换是整体转换:
25₁₀ = 11001₂
8421BCD码是每一位十进制数字分别编码:
2 -> 0010
5 -> 0101
所以25的8421BCD码 = 0010 0101
所以:
25的二进制码 ≠ 25的BCD码
这类题只要看到“BCD”,就要立刻想到“逐位编码”。
2. 8421BCD码和余三码的区别
8421BCD码是有权码,余三码是无权码。
例如数字6:
6的8421BCD码 = 0110
6的余三码 = 0110 + 0011 = 1001
余三码不是直接把数值写成二进制,而是在8421BCD码基础上加3。
3. 格雷码和普通二进制码的区别
普通二进制码按数值自然递增,但相邻数可能多位变化。
格雷码不强调按普通二进制加1,而强调相邻状态只有一位变化。
例如3到4:
普通二进制:
3 = 011
4 = 100
变化了3位
格雷码:
3 = 010
4 = 110
只变化了1位
4. 奇偶校验码和前面几种数值编码的区别
8421BCD码、余三码、格雷码主要用于表示信息或状态;奇偶校验码主要用于检查传输或存储过程中是否发生错误。
它不关心这个数据表示的是几,而关心整个码字中1的个数是否符合约定。
八、考研做题时的快速判断方法
看到“8421BCD码”,第一反应应该是:十进制数逐位转4位编码,不是整体转二进制。比如 39 的8421BCD码是 0011 1001,不是39的二进制。
看到“余三码”,第一反应应该是:每一位十进制数字先写8421BCD,再加 0011。比如 7 的余三码是 0111 + 0011 = 1010。
看到“格雷码”,第一反应应该是:相邻只差一位。二进制转格雷码用“最高位不变,相邻异或”;格雷码转二进制用“最高位不变,逐位累积异或”。
看到“奇偶校验码”,第一反应应该是:数1的个数。偶校验要求总1数为偶数;奇校验要求总1数为奇数。它只能检测奇数位错误,不能纠错。
看到“卡诺图”,第一反应应该是:行列顺序按格雷码 00、01、11、10 排列;圈1求与或式;圈越大越好;变化变量消去,不变变量保留;边界相邻;无关项X可用可不用。
九、最后做一个总例子串起来
假设十进制数 48。
它的普通二进制码是整体转换:
48₁₀ = 110000₂
它的8421BCD码是逐位编码:
4 -> 0100
8 -> 1000
所以48的8421BCD码 = 0100 1000
它的余三码是每一位BCD码加3:
4 -> 0100 + 0011 = 0111
8 -> 1000 + 0011 = 1011
所以48的余三码 = 0111 1011
如果只是把普通二进制 110000 转成格雷码,则:
二进制码:1 1 0 0 0 0
格雷码最高位:1
后面相邻异或:
1⊕1=0
1⊕0=1
0⊕0=0
0⊕0=0
0⊕0=0
所以格雷码 = 101000
如果对数据 110000 加偶校验位,原数据中1的个数是2个,已经是偶数,所以偶校验位为0:
1100000
如果加奇校验位,则校验位为1:
1100001
这几个结果完全不同,因为它们服务的目的不同:普通二进制表示数值,BCD表示十进制数字,余三码是十进制编码变体,格雷码用于相邻状态变化,奇偶校验码用于检错。卡诺图则不是编码,而是用来化简逻辑表达式。
与非门、或非门、异或门,以及组合逻辑门的判断方法
与非门、或非门、异或门,以及组合逻辑门的判断方法
在数字逻辑中,逻辑门本质上就是对 0 和 1 进行逻辑运算的基本电路。考研里最常见的是与门、或门、非门、与非门、或非门、异或门、同或门。理解这些门时,不要只背名字,而要把它们和逻辑表达式、真值表、图形符号、常见题型联系起来。
与非门、或非门最容易混淆,因为它们都是“先进行一种基本逻辑运算,再取反”。异或门则常用于判断“两个输入是否不同”,在加法器、奇偶校验、码制转换中经常出现。
一、先回顾三个基本门:与门、或门、非门
1. 与门 AND
与门的逻辑含义是:只有所有输入都为 1,输出才为 1。
两输入与门:
| A | B | Y = A·B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
可以记为:
有 0 出 0,全 1 出 1
2. 或门 OR
或门的逻辑含义是:只要有一个输入为 1,输出就是 1。
两输入或门:
| A | B | Y = A + B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
可以记为:
有 1 出 1,全 0 出 0
3. 非门 NOT
非门就是取反。
| A | Y = A’ |
|---|---|
| 0 | 1 |
| 1 | 0 |
也可以写成:
Y = ¬A
Y = A'
Y = A 上面加横线
在考研题目中,A'、¬A、A̅ 都可能表示 A 取反。
二、与非门 NAND
与非门就是“与门 + 非门”。
也就是说,先做与运算,再整体取反:
Y = (A·B)'
两输入与非门真值表如下:
| A | B | A·B | Y = (A·B)’ |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
与非门的判断口诀是:
有 0 出 1,全 1 出 0
因为与门是“全 1 出 1”,再取反之后,就变成“全 1 出 0,其余情况出 1”。
与非门的考点
与非门非常重要,因为它是“功能完备门”。所谓功能完备,意思是只用与非门就可以实现所有逻辑功能,包括非、与、或、异或等。
例如:
1. 用与非门实现非门
令两个输入都接 A:
Y = (A·A)' = A'
所以一个与非门可以当非门用。
2. 用与非门实现与门
先与非,再取反:
A·B = ((A·B)')'
实现方式:
先用一个与非门得到 (A·B)'
再用一个与非门对它取反
3. 用与非门实现或门
根据德摩根定律:
A + B = (A'·B')'
所以可以先把 A、B 分别取反,再送入与非门。
这类题经常会考“只用与非门实现某个逻辑表达式”。
三、或非门 NOR
或非门就是“或门 + 非门”。
先做或运算,再整体取反:
Y = (A + B)'
两输入或非门真值表如下:
| A | B | A + B | Y = (A + B)’ |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 0 |
或非门的判断口诀是:
有 1 出 0,全 0 出 1
因为或门是“有 1 出 1”,再取反之后,就变成“有 1 出 0,只有全 0 才出 1”。
或非门的考点
或非门和与非门一样,也是功能完备门。只用或非门也可以实现所有逻辑功能。
1. 用或非门实现非门
令两个输入都接 A:
Y = (A + A)' = A'
2. 用或非门实现或门
先或非,再取反:
A + B = ((A + B)')'
3. 用或非门实现与门
根据德摩根定律:
A·B = (A' + B')'
所以先分别得到 A’、B’,再送入或非门。
四、异或门 XOR
异或门和与非门、或非门不一样。它不是简单的“某个基本门后面接非门”,而是专门用于判断两个输入是否不同。
异或门的逻辑含义是:
两个输入不同,输出 1;
两个输入相同,输出 0。
两输入异或门真值表如下:
| A | B | Y = A ⊕ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
口诀:
同 0 异 1
也就是说:
相同为 0,不同为 1
异或的逻辑表达式是:
A ⊕ B = A'B + AB'
这个表达式非常重要。它说明异或输出为 1 的情况有两种:
A = 0, B = 1
A = 1, B = 0
因此:
A ⊕ B = A'B + AB'
异或门的常见性质
异或在计算机组成原理、数字逻辑、校验码中都很常见,尤其要记住以下性质:
A ⊕ 0 = A
A ⊕ 1 = A'
A ⊕ A = 0
A ⊕ A' = 1
这些性质在做题时非常好用。
例如:
1 ⊕ 0 = 1
1 ⊕ 1 = 0
0 ⊕ 0 = 0
0 ⊕ 1 = 1
异或还满足交换律和结合律:
A ⊕ B = B ⊕ A
(A ⊕ B) ⊕ C = A ⊕ (B ⊕ C)
因此多个变量异或时,可以按 1 的个数判断结果:
输入中 1 的个数为奇数,异或结果为 1;
输入中 1 的个数为偶数,异或结果为 0。
例如:
1 ⊕ 0 ⊕ 1 = 0
因为有两个 1,是偶数个,所以结果为 0。
1 ⊕ 0 ⊕ 1 ⊕ 1 = 1
因为有三个 1,是奇数个,所以结果为 1。
这就是异或门和奇偶校验码关系很密切的原因。
五、同或门 XNOR
既然有异或门,就有同或门。同或门可以理解为“异或门取反”。
Y = (A ⊕ B)'
同或门的含义是:
两个输入相同,输出 1;
两个输入不同,输出 0。
真值表如下:
| A | B | A ⊕ B | Y = (A ⊕ B)’ |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
口诀:
同 1 异 0
同或表达式是:
A ⊙ B = AB + A'B'
它输出为 1 的情况是:
A = 1, B = 1
A = 0, B = 0
所以:
A ⊙ B = AB + A'B'
同或门常用于比较两个二进制位是否相等。如果 A 和 B 相等,同或输出 1;如果不相等,同或输出 0。
六、与非、或非、异或、同或的对比
这几个门最容易混在一起,可以放到一张表里记。
| 逻辑门 | 表达式 | 输出为 1 的条件 | 口诀 |
|---|---|---|---|
| 与门 | A·B | A、B 全为 1 | 全 1 出 1 |
| 或门 | A + B | A、B 至少一个为 1 | 有 1 出 1 |
| 与非门 | (A·B)’ | A、B 不全为 1 | 有 0 出 1 |
| 或非门 | (A + B)’ | A、B 全为 0 | 全 0 出 1 |
| 异或门 | A ⊕ B | A、B 不同 | 同 0 异 1 |
| 同或门 | (A ⊕ B)’ | A、B 相同 | 同 1 异 0 |
对于两输入门,可以直接记住下面这组结果:
| A | B | 与 | 或 | 与非 | 或非 | 异或 | 同或 |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
七、组合门该如何判断
所谓“组合门”,通常是指由多个基本逻辑门组合而成的逻辑电路。判断这种电路时,核心方法不是凭感觉看图,而是逐级写表达式。
一般按照下面的顺序做:
1. 从输入端开始,给每一条中间线命名
2. 看清每个门的类型
3. 写出每一级输出表达式
4. 逐层代入,得到最终表达式
5. 必要时用德摩根定律化简
6. 如果题目问功能,再和常见门的表达式或真值表对比
例如看到一个电路:
A、B 先进入与门,输出 X
X 再经过非门,输出 Y
那么:
X = A·B
Y = X' = (A·B)'
所以这是与非门。
再例如:
A、B 先进入或门,输出 X
X 再经过非门,输出 Y
那么:
X = A + B
Y = X' = (A + B)'
所以这是或非门。
八、判断组合门时最常用的三个技巧
1. 输出端有“小圆圈”,通常表示取反
在数字逻辑图中,门电路输出端如果有一个小圆圈,通常表示输出取反。
例如:
与门输出端加小圆圈 = 与非门
或门输出端加小圆圈 = 或非门
异或门输出端加小圆圈 = 同或门
所以看到小圆圈时,要立刻想到:
最后整体取反
这也是很多题的陷阱。学生容易只看前面的门形状,忽略输出端的小圆圈。
2. “先算门,再看反”
对于与非门和或非门,不要直接凭名字乱判断。可以按这个顺序:
与非门:先与,再非
或非门:先或,再非
例如:
与非门不是“先非再与”
或非门不是“先非再或”
这一点很重要。
(A·B)' 和 A'·B' 不是同一个式子。
根据德摩根定律:
(A·B)' = A' + B'
(A + B)' = A'·B'
也就是说:
与非 = 非后变或
或非 = 非后变与
这就是德摩根定律在门电路中的核心作用。
3. 异或门看“是否不同”
异或门最好的判断方法不是看复杂表达式,而是看输出为 1 的情况。
如果输出为 1 的情况是:
01 和 10
那就是异或:
A'B + AB'
如果输出为 1 的情况是:
00 和 11
那就是同或:
A'B' + AB
所以判断异或、同或时,最直接的办法是看真值表。
九、常见组合逻辑表达式与门功能对应
考研题中经常不是直接画一个标准门,而是给一个逻辑表达式,让判断它等价于什么门。下面这些必须熟悉。
1. 与非门
Y = (AB)'
等价于:
Y = A' + B'
判断方法:
整体是 AB 取反,所以是与非门。
2. 或非门
Y = (A + B)'
等价于:
Y = A'B'
判断方法:
整体是 A + B 取反,所以是或非门。
3. 异或门
Y = A'B + AB'
等价于:
Y = A ⊕ B
判断方法:
两个变量一个为 0、一个为 1 时输出 1,所以是异或。
4. 同或门
Y = AB + A'B'
等价于:
Y = A ⊙ B
Y = (A ⊕ B)'
判断方法:
两个变量相同时输出 1,所以是同或。
5. 非门
Y = A'
判断方法很直接:
0 变 1,1 变 0。
十、常见组合还有哪些
除了单纯的门电路,408 风格或者数字逻辑基础题里还常见这些组合逻辑部件。它们本质上都是由基本门组合出来的。
1. 半加器
半加器用于完成两个 1 位二进制数 A、B 的加法,不考虑来自低位的进位。
它有两个输出:
和位 S = A ⊕ B
进位 C = A·B
真值表:
| A | B | S | C |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
半加器要记住:
和位用异或,进位用与。
为什么和位是异或?因为一位加法中:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10,和位为 0,进位为 1
和位正好是“同 0 异 1”。
2. 全加器
全加器用于完成三个 1 位数相加:A、B、低位进位 Cin。
输出包括:
和位 S
向高位的进位 Cout
公式为:
S = A ⊕ B ⊕ Cin
Cout = AB + Cin(A ⊕ B)
也可以写成:
Cout = AB + ACin + BCin
全加器的核心记忆:
和位:三个数异或
进位:至少两个输入为 1,则产生进位
所以全加器的进位输出本质上是“三个输入中至少有两个为 1”。
3. 比较器
比较器用于比较两个二进制数是否相等,或者判断大小。
如果只是比较一位 A 和 B 是否相等,可以用同或门:
A 和 B 相等:A ⊙ B = 1
A 和 B 不等:A ⊕ B = 1
多位相等比较器通常是:
每一位都相等,整体才相等
例如比较 2 位数 A₁A₀ 和 B₁B₀:
相等输出 E = (A₁ ⊙ B₁) · (A₀ ⊙ B₀)
这体现了:
每一位同或,然后所有结果再相与
4. 奇偶校验电路
异或门在奇偶校验中非常常见。
多个输入异或的结果可以判断 1 的个数是奇数还是偶数:
若 1 的个数为奇数,异或结果为 1;
若 1 的个数为偶数,异或结果为 0。
所以异或门可以用于生成奇偶校验位,也可以用于检测传输数据是否出错。
例如:
P = A ⊕ B ⊕ C ⊕ D
如果 A、B、C、D 中 1 的个数为奇数,则 P = 1;如果 1 的个数为偶数,则 P = 0。
5. 译码器
译码器是把 n 位二进制输入转换成最多 2ⁿ 个输出中的某一个有效输出。
例如 2 线 – 4 线译码器输入为 A、B,输出为 Y₀、Y₁、Y₂、Y₃:
Y₀ = A'B'
Y₁ = A'B
Y₂ = AB'
Y₃ = AB
可以看到,每个输出其实都是一个最小项。
译码器在考研中常和存储器片选、地址译码、控制信号产生联系起来。
6. 编码器
编码器与译码器方向相反,它是把多个输入信号编码成二进制代码输出。
例如 8 线 – 3 线编码器,就是把 8 个输入中的某一个有效输入编码成 3 位二进制输出。
编码器常见考法是:
普通编码器
优先编码器
优先编码器表示多个输入同时有效时,优先级高的输入决定输出。
7. 数据选择器
数据选择器也叫多路选择器,简称 MUX。它的作用是从多个输入数据中选择一个送到输出端。
例如 4 选 1 数据选择器有:
数据输入:D₀、D₁、D₂、D₃
选择输入:S₁、S₀
输出:Y
逻辑表达式为:
Y = S₁'S₀'D₀ + S₁'S₀D₁ + S₁S₀'D₂ + S₁S₀D₃
含义是:
S₁S₀ = 00,选择 D₀
S₁S₀ = 01,选择 D₁
S₁S₀ = 10,选择 D₂
S₁S₀ = 11,选择 D₃
数据选择器常用于实现任意组合逻辑函数。
8. 数据分配器
数据分配器和数据选择器方向相反。
数据选择器是:
多个输入选一个输出
数据分配器是:
一个输入分配到多个输出中的某一个
它通常也由选择信号决定数据送到哪一路。
十一、做题时怎么快速判断门电路功能
遇到门电路判断题,可以按以下思路处理。
第一步,看有没有输出端小圆圈。如果有,说明最后结果要取反。与门加小圆圈就是与非门,或门加小圆圈就是或非门,异或门加小圆圈就是同或门。
第二步,看表达式是否出现整体取反。例如:
(AB)' 是与非
(A + B)' 是或非
注意整体取反和单个变量取反不是一回事。
第三步,看输出为 1 的输入组合。如果输出为 1 的组合是 01、10,就是异或;如果输出为 1 的组合是 00、11,就是同或。
第四步,如果电路比较复杂,就不要硬看图。应该从输入到输出逐级写中间变量。例如:
X = A'
Z = B + C
Y = X·Z
最后再整理成:
Y = A'(B + C)
如果需要判断功能,再画真值表或和常见表达式对照。
十二、最容易错的地方
与非门最容易被误解成“先非再与”。实际上与非门是:
Y = (AB)'
不是:
Y = A'B'
因为:
(AB)' = A' + B'
或非门也容易被误解成“先非再或”。实际上或非门是:
Y = (A + B)'
不是:
Y = A' + B'
因为:
(A + B)' = A'B'
异或门容易和或门混淆。或门是“有 1 就出 1”,所以 1 OR 1 = 1;异或门是“不同才出 1”,所以 1 XOR 1 = 0。
这一点在加法器中特别重要:
1 + 1 的和位是 0,进位是 1
所以半加器的和位不是或门,而是异或门。
十三、总结记忆
这部分可以压缩成下面几句话:
与门:全 1 出 1
或门:有 1 出 1
非门:0、1 互换
与非门:先与后非,有 0 出 1,全 1 出 0
或非门:先或后非,有 1 出 0,全 0 出 1
异或门:同 0 异 1
同或门:同 1 异 0
对应表达式:
与非:Y = (AB)'
或非:Y = (A + B)'
异或:Y = A'B + AB'
同或:Y = AB + A'B'
组合门判断的核心方法是:
看门形,看小圆圈;
逐级写表达式;
用德摩根定律化简;
用真值表验证;
最后和常见门功能对应。
在计算机组成原理和数字逻辑题目中,与非门、或非门常用于逻辑函数实现;异或门常用于加法器、比较器、奇偶校验和码制转换。真正做题时,最重要的是能从表达式、真值表、门电路图三者之间来回转换。



