skip to content

Search

组合逻辑

5 min read Updated:
黑色的海滩与海水

真值表,逻辑运算,逻辑门,布尔代数;多路复用器,ALU,加法器

逻辑门

主要的逻辑门包括与门(AND)、或门(OR)、非门(NOT)、异或门(XOR)、与非门(NAND)、或非门(NOR)等。

and-or-not xor-nand-nor

布尔代数

布尔代数的基本运算法则如下: 布尔代数

多路复用器

多路复用器(Multiplexer)可以根据选择信号从多个输入中选择一个输出。

多路复用器

ALU

算术逻辑单元(Arithmetic Logic Unit)是计算机中的一个重要组件,负责执行算术和逻辑运算。

ALU ALU内部结构

加法器

原理

二进制加法的过程中每一位运算不是独立的。两个数字的当前位的和加上当前产生的进位,产生当前位的和以及下一位的进位。 设aia_i和bib_i分别是两个二进制数的第ii位,cic_i是当前位产生的进位,那么当前位的和sis_i和下一位的进位ci+1c_{i+1}可以表示为:

si=XOR(ai,bi,ci)=ai⊕bi⊕cis_i = XOR(a_i, b_i, c_i) = a_i \oplus b_i \oplus c_i ci+1=MAJ(ai,bi,ci)=aibi+aici+bicic_{i+1} = MAJ(a_i, b_i, c_i) = a_i b_i + a_i c_i + b_i c_i 加法真值表

电路

一位加法器的电路如下:

一位加法器

将上一位的进位输入到下一位的加法器中,就可以构建多位加法器:

多位加法器

溢出

需要有一种标志表示加法器得到的结果是否溢出(OF)。

溢出只会发生在有符号运算的两种情况下:

  • 两个正数相加得到一个负数。此时输入的最高位都是0,但输出的最高位是1。
  • 两个负数相加得到一个正数。此时输入的最高位都是1,但输出的最高位是0。

有符号数可能产生溢出的运算情况可以分为下面四种:

加数1加数2输出是否溢出cn−1c_{n-1}cnc_n
正正负是01
正正正否00
负负正是10
负负负否11

由上表看出溢出发生的标志是

overflow=cn−1⊕cn\text{overflow} = c_{n-1} \oplus c_n

即当最高位的进位和次高位的进位不同时发生溢出。

减法器

减法器可以通过加法器来实现。减去一个数等价于加上它的补码。

减法器