有权码,卡诺图化简,格雷码,8421BCD码,奇偶校验码和余三码
本文最后更新于2 天前,其中的信息可能已经过时,如有错误请发送邮件到184874483@qq.com

这些编码和卡诺图先放在同一条主线里理解

这一部分本质上属于数字逻辑与计算机组成原理中的“信息编码”和“逻辑函数化简”。其中有权码、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码
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001

因为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码余三码
000000011
100010100
200100101
300110110
401000111
501011000
601101001
701111010
810001011
910011100

例如十进制数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位二进制码与格雷码对应关系如下:

十进制二进制码格雷码
0000000
1001001
2010011
3011010
4100110
5101111
6110101
7111100

可以看到,从上到下相邻格雷码只变化一位:

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。

两输入与门:

ABY = A·B
000
010
100
111

可以记为:

有 0 出 0,全 1 出 1

2. 或门 OR

或门的逻辑含义是:只要有一个输入为 1,输出就是 1。

两输入或门:

ABY = A + B
000
011
101
111

可以记为:

有 1 出 1,全 0 出 0

3. 非门 NOT

非门就是取反。

AY = A’
01
10

也可以写成:

Y = ¬A
Y = A'
Y = A 上面加横线

在考研题目中,A'¬A 都可能表示 A 取反。


二、与非门 NAND

与非门就是“与门 + 非门”。

也就是说,先做与运算,再整体取反:

Y = (A·B)'

两输入与非门真值表如下:

ABA·BY = (A·B)’
0001
0101
1001
1110

与非门的判断口诀是:

有 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)'

两输入或非门真值表如下:

ABA + BY = (A + B)’
0001
0110
1010
1110

或非门的判断口诀是:

有 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。

两输入异或门真值表如下:

ABY = A ⊕ B
000
011
101
110

口诀:

同 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。

真值表如下:

ABA ⊕ BY = (A ⊕ B)’
0001
0110
1010
1101

口诀:

同 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·BA、B 全为 1全 1 出 1
或门A + BA、B 至少一个为 1有 1 出 1
与非门(A·B)’A、B 不全为 1有 0 出 1
或非门(A + B)’A、B 全为 0全 0 出 1
异或门A ⊕ BA、B 不同同 0 异 1
同或门(A ⊕ B)’A、B 相同同 1 异 0

对于两输入门,可以直接记住下面这组结果:

AB与非或非异或同或
00001101
01011010
10011010
11110001

七、组合门该如何判断

所谓“组合门”,通常是指由多个基本逻辑门组合而成的逻辑电路。判断这种电路时,核心方法不是凭感觉看图,而是逐级写表达式。

一般按照下面的顺序做:

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

真值表:

ABSC
0000
0110
1010
1101

半加器要记住:

和位用异或,进位用与。

为什么和位是异或?因为一位加法中:

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'

组合门判断的核心方法是:

看门形,看小圆圈;
逐级写表达式;
用德摩根定律化简;
用真值表验证;
最后和常见门功能对应。

在计算机组成原理和数字逻辑题目中,与非门、或非门常用于逻辑函数实现;异或门常用于加法器、比较器、奇偶校验和码制转换。真正做题时,最重要的是能从表达式、真值表、门电路图三者之间来回转换。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇