---
url: /circuit/Digital-1/index.md
---
## Part 1 数制

### · 数制概念

数制，又称“计数制”，指用一组固定的符号和统一的规则来表示数值的方法；

数制关注的内容：每一位的构成（使用什么符号即数码）和进位的规则；

* **基数** —— 使用的数码的个数，即每一位最多能用多少个符号来表示；基数是 N 则称为 N 进制，即“逢 N 进一”；
* **权** —— 每一位的 1 代表的大小；

### · 常用数制

|          | 基数                      | 展开形式            | 脚注符号 |
| -------- | ------------------------- | ------------------- | -------- |
| 十进制   | 10每一位用 0 ~ 9 表示 | $D = \sum k\_i 10^i$ | D        |
| 二进制   | 2每一位用 0 / 1 表示  | $D = \sum k\_i 2^i$  | B        |
| 八进制   | 8每一位用 0 ~ 7 表示  | $D = \sum k\_i 8^i$  | O        |
| 十六进制 | 16每一位用 0 ~ F 表示 | $D = \sum k\_i 16^i$ | H        |

**不同进制对照表**：

| 十进制数 | 二进制 | 八进制 | 十六进制 |
| -------- | ------ | ------ | -------- |
| 00       | 0000   | 00     | 0        |
| 01       | 0001   | 01     | 1        |
| 02       | 0010   | 02     | 2        |
| 03       | 0011   | 03     | 3        |
| 04       | 0100   | 04     | 4        |
| 05       | 0101   | 05     | 5        |
| 06       | 0110   | 06     | 6        |
| 07       | 0111   | 07     | 7        |
| 08       | 1000   | 10     | 8        |
| 09       | 1001   | 11     | 9        |
| 10       | 1010   | 12     | A        |
| 11       | 1011   | 13     | B        |
| 12       | 1100   | 14     | C        |
| 13       | 1101   | 15     | D        |
| 14       | 1110   | 16     | E        |
| 15       | 1111   | 17     | F        |

> 必须熟练掌握！

其他进制 → 十进制

> 只需要按照
> $$
> D = \sum k\_i N^i
> $$
> 展开即可；
>
> 其中：$k\_i$ 为第 i 位的系数，$N^i$ 为第 i 位的权，N 为基数；

十进制 → 二进制

> 整数部分反复除 2 取余数，倒排（从右向左排列）（从低位到高位排列）；
>
> 小数部分反复乘 2 取整数部分，正排（从左向右排列）（从高位到低位排列）；

二进制 → 十六进制

> 以小数点为分割：
>
> * 整数部分从右向左（从低位到高位）每四个划为一组（不够的在左边补 0），
> * 小数部分从左向右（从高位到低位）每四个划为一组（不够的在右边补 0）；

十六进制 → 二进制

> 将每一位用对应的四位二进制数代替即可；

二进制 → 八进制

> 以小数点为分割：
>
> * 整数部分从右向左（从低位到高位）每三个划为一组（不够的在左边补 0），
> * 小数部分从左向右（从高位到低位）每三个划为一组（不够的在右边补 0）；

八进制 → 二进制

> 将每一位用对应的三位二进制数代替即可；

十进制 → 八进制、十六进制

> 先转换为二进制，再将二进制转换为八进制、十六进制；

八进制与十六进制之间的转换

> 先转换为二进制，再将二进制转换为目标进制；

### · 二进制算术运算

**特点**：

> ① 和十进制算数运算的规则基本相同，区别在于“逢二进一”；
>
> ② 乘法和除法可以转化为移位操作与加减操作；
>
> ③ 通过补码运算（即将引入的概念），可以将减法运算转换为加法运算；
>
> 因此，数字电路普遍采用二进制进行算术运算；

**如何表示二进制数的正负**：

> 在前面增加一个符号位，0 表示正数，1 表示负数；
>
> 注意：一个二进制数的最高位是符号位，符号位的 0 / 1 不代表大小，只是代表正负；

**原码、反码、补码**：

> 正数（符号位为 0）—— 原码 = 反码 = 补码；
>
> 负数（符号位为 1）—— 反码为所有数字位取反，补码等于反码加 1；
>
> 补码的补码即为原码；

> \[!important]
>
> ① 反码取反是指对数字位取反，不改变符号位！例如 -7 即 1111 的反码是 1000，不是 0000！
>
> ② 补码是不对称的，例如补码为 1000 代表 -8，而不代表 -0！即同样位数的二进制补码，负数会比正数“多一个”；
>
> ③ 补码的“加 1”指的是在最低位加 1 的二进制加法运算，不是指数值 1，即如果含有小数部分，1 是加在整体的最右边；

**利用二进制补码运算求解带符号数的加法运算**：

Step 1 —— 分析需要使用多少个数字位；（培养思维习惯！不能忽略！）

Step 2 —— 用带符号位的二进制数表示，求解每个二进制数的补码；

Step 3 —— 对补码进行加法运算，再对结果求补码，即为最终结果；

注意最后一步，对补码进行加法运算时，数字位最高位产生的进位要进到符号位上去！（教材中描述的“舍弃产生的进位”指的是舍弃符号位产生的进位）

## Part 2 码制

### · 编码概念

广义的编码指的就是将信息从一种形式转换为另一种规范的形式；对于数字电路，就是将现实世界中的各种物理信息转换为离散的电压序列，来表示、处理和分析信息；

事实上，前面学习的进位计数制也是一种编码，用不同进制数来表示“量”；首先单独讲解数制是因为数制的一个重要的特点是其编码后能够参与算术运算；而一般来说“码制”是对非数值信息的表示；

### · 十进制代码

| 十进制数 | 8421码 | 余3码 | 2421码 | 5211码 | 余3循环码 |
| -------- | ------ | ----- | ------ | ------ | --------- |
| 0        | 0000   | 0011  | 0000   | 0000   | 0010      |
| 1        | 0001   | 0100  | 0001   | 0001   | 0110      |
| 2        | 0010   | 0101  | 0010   | 0100   | 0111      |
| 3        | 0011   | 0110  | 0011   | 0101   | 0101      |
| 4        | 0100   | 0111  | 0100   | 0111   | 1100      |
| 5        | 0101   | 1000  | 1100   | 1000   | 1100      |
| 6        | 0110   | 1001  | 1101   | 1001   | 1101      |
| 7        | 0111   | 1010  | 1110   | 1100   | 1111      |
| 8        | 1000   | 1011  | 1111   | 1101   | 1110      |
| 9        | 1001   | 1100  | 1111   | 1111   | 1010      |

**说明：**

> * 十进制代码：用四位二进制数（最多16个）来表示 0 ~ 9；
> * 8421、2421、5211 每个数字指的是每个位的权；
> * 余3码是在 BCD 码即 8421 码的基础上加 3，即用 3~12 对应的二进制数来表示 0~9；
> * 余3循环码是取格雷码（见下页）中的 3~12；

### · 格雷码

教材中的格雷码指的是四位格雷码，即用四位代码来表示 0 ~ 15 共十六种状态；

**编码特点**：

> * 每一位的状态变化都按一定的顺序循环：0110、0111、1000、0000、1111、1100、0000、0001、1111、1111（四位16个，只循环半个周期，其他位数的格雷码表示次类推，自右向左每一位状态循环中连续的 0 和 1 数目加1倍）
>
> * 按表中顺序变化时，相邻的代码只有一位改变状态，这是格雷码最大的特点和优点；（应用：减少代码转换过程中的过渡噪声）

**四位格雷码表**：

| 编号顺序 | 四位二进制数 | 格雷码 |
| -------- | ------------ | ------ |
| 0        | 0000         | 0000   |
| 1        | 0001         | 0001   |
| 2        | 0010         | 0011   |
| 3        | 0011         | 0010   |
| 4        | 0100         | 0110   |
| 5        | 0101         | 0111   |
| 6        | 0110         | 0101   |
| 7        | 0111         | 0100   |
| 8        | 1000         | 1100   |
| 9        | 1001         | 1101   |
| 10       | 1010         | 1111   |
| 11       | 1011         | 1110   |
| 12       | 1100         | 1010   |
| 13       | 1101         | 1011   |
| 14       | 1110         | 1001   |
| 15       | 1111         | 1000   |

### · ASCII码

美国信息交换标准代码，用 7 位二进制代码（共128个）来表示信息，广泛应用于计算机和通信领域中；

### · 总结

> 关于编码一节，理解编码的概念，明白为什么要编码、编码用来做什么，了解常见的几种编码即可，第一次学习时不需要严格地死记硬背教材上列举的各种编码，后期继续学习过程中用到时再复习，重点是每种编码的编码规则和特点；

## Part 3 布尔代数

数字电路使用二进制，即电路中的信号变量均为二值变量，只能有 0 和 1 两种取值。逻辑代数描述了二值变量的运算规律，它是英国数学家布尔（George Boole）于 19 世纪中叶在他的著作《逻辑的数学分析》及《思维规律》中提出的，也称为布尔代数。逻辑代数是按逻辑规律进行运算的代数，是分析和设计数字逻辑电路不可缺少的基础数学工具。

### · 运算法则

逻辑代数中的变量只有 0 和 1 两种取值，逻辑函数的输入变量可以有多个，输出变量为一位。

逻辑代数基本运算包括“与”“或”“非”三种运算：

/Definition/

> “与”运算也称为逻辑乘，用 “·” 表示，分别为
> $$
> 0 \cdot 0 = 0 \quad\quad 0 \cdot 1 = 0 \quad\quad 1 \cdot 0 = 0 \quad\quad 1 \cdot 1 = 1
> $$
>
> 两个逻辑变量的“与”运算表示为\
> $$
> F = A \cdot B
> $$
> $A$、$B$ 分别为逻辑变量。$n$ 个变量的“与”运算表示为
> $$
> F = A\_1 \cdot A\_2 \cdots A\_n
> $$
> “或”运算也称为逻辑加，用 “+” 表示，分别为 $0 + 0 = 0$，$0 + 1 = 1$，$1 + 0 = 1$，$1 + 1 = 1$。
>
> 两个逻辑变量的“或”运算表示为\
> $$
> F = A + B
> $$
> $A$、$B$ 分别为逻辑变量。$n$ 个变量的“或”运算表示为\
> $$
> F = A\_1 + A\_2 + \cdots + A\_n
> $$
> “非”运算也称为反相运算，即 $\overline{0} = 1$，$\overline{1} = 0$。“非”运算表示为\
> $$
> F = \overline{A}
> $$
> $A$ 为逻辑变量。

下面我们给出逻辑代数的基本定律：

> （1）交换律：
> $$
> A\cdot B=B\cdot A,\quad A+B=B+A
> $$
> （2）结合律：
> $$
> A\cdot(B\cdot C)=(A\cdot B)\cdot C,\quad A+(B+C)=(A+B)+C
> $$
> （3）分配律：
> $$
> A\cdot(B+C)=A\cdot B+A\cdot C,\quad A+B\cdot C=(A+B)\cdot(A+C)
> $$
> （4）01 律：
> $$
> 1\cdot A=A,\quad1+A=1,\quad0\cdot A=0,\quad 0+A=A
> $$
> （5）互补律：
> $$
> A\cdot\overline{A}=0,\quad A+\overline{A}=1
> $$
>
> （6）重叠律：
> $$
> A\cdot A=A,\quad A+A=A
> $$
> （7）还原律：
> $$
> \overline{\overline{A}}=A
> $$
> （8）反演律，即 De Morgan Theorems：
> $$
> \overline{A\cdot B}=\overline{A}+\overline{B} ,\quad \overline{A+B}=\overline{A}\cdot\overline{B}
> $$

可以用真值表证明上述定律的正确性。

同样，我们还存在如下复合逻辑：

> **异或**：
> $$
> F = A \oplus B = A \overline{B} + \overline{A} B
> $$
> **同或**：
> $$
> F = A \odot B = A B + \overline{A} \overline{B} = \overline{A \oplus B}
> $$

下面讲讲逻辑代数的**基本规则**：

> **代入规则**：在任何一个逻辑代数等式中，如果等式两边出现的某一变量都用同一个逻辑函数代替，则等式依然成立。

例如，用代入规则证明摩根定理也适用于多变量的情况。已知 $\overline{A\cdot B}=\overline{A}+\overline{B}$，将 $(BC)$ 代入等号左边 $B$ 的位置，有\
$$
\overline{A\cdot(BC)}=\overline{A}+\overline{BC}=\overline{A}+\overline{B}+\overline{C}
$$

同样，已知 $\overline{A+B}=\overline{A}\cdot\overline{B}$，将 $(B+C)$ 代入等号左边 $B$ 的位置，有

$$
\overline{A+(B+C)}=\overline{A}\cdot\overline{B+C}=\overline{A}\cdot\overline{B}\cdot\overline{C}
$$
再如，由 01 律，已知 $1+A=1$，则有 $1=1+A=1+A+B+C+ABC+DE\cdots$，即 1 可以吸收或扩展出任意的项。

> **反演规则**：
>
> 设 $F$ 为逻辑函数，如果将该函数表达式中所有的“与”（·）换成“或”（+），“或”（+）换成“与”（·）；“0”换成“1”，“1”换成“0”；原变量换成反变量，反变量换成原变量，则所得到的逻辑函数即 $F$ 的反函数，表达式为 $\overline{F}$。
>
> 若函数 $F$ 成立，其反函数 $\overline{F}$ 也成立，同时有 $\overline{\overline{F}}=F$。
>
> 运用反演规则时要注意以下两点：
>
> （1）运算优先顺序不变；
>
> （2）不是单一变量上的反号保持不变。

最后则是对偶规则：

> **对偶规则**：
>
> 若 $F$ 为逻辑函数，如果将该函数表达式中所有“与”（·）换成“或”（+），“或”（+）换成“与”（·）；“0”换成“1”，“1”换成“0”，则所得到的逻辑函数即 $F$ 的对偶式，表达式为 $F'$。若 $F$ 成立，则 $F'$ 也成立，同时有 $(F')'=F$。

> \[!important]
>
> 利用对偶规则可以使要证明的公式数量减少一半。

逻辑代数的常用公式列举如下：

> （1）$A+AB=A$，$A(A+B)=A$。也称为吸收律。
>
> （2）$AB+\overline{A}B=A$，$(A+B)(A+\overline{B})=A$。也称为合并律。
>
> （3）$A+\overline{A}B=A+B$，$A(\overline{A}+B)=AB$。
>
> （4）$AB+\overline{A}C+BC=AB+\overline{A}C$。也称为冗余定理。推论为：
> $$
> AB+\overline{A}C+BCDE=AB+\overline{A}C
> $$
> （5）$A\oplus B=A\oplus B$。可证明：
> $$
> \overline{A\oplus B}=\overline{A}B+A\overline{B}=(\overline{A}+B)(A+\overline{B})=AB+\overline{A}\cdot\overline{B}=A\odot B
> $$
> （6）$A\oplus A=0$，$A\oplus\overline{A}=1$，$A\oplus0=A$，$A\oplus1=\overline{A}$。
>
> （7）如果 $A\oplus B=C$，则 $A\oplus C=B$，$B\oplus C=A$。推论：如果 $A\oplus B\oplus C=0$，则有
> $$
> A\oplus B\oplus0=C,\quad C\oplus B\oplus0=A
> $$

在多变量异或运算中，运算结果只与变量为 1 的个数有关，与变量为 0 的个数无关。若有奇数个变量为 1，则结果为 1；若有偶数个变量为 1，则结果为 0。

/example/  已知 $F=A(B+\overline{C})+CD$，求 $F'$。

> /proof/
> $$
> F'=(A+B\overline{C})(C+D)
> $$

/example/ 已知 $G=\overline{(W+X)\overline{Y}\cdot Z\cdot X}$，求 $G'$

> /proof/
> $$
> G'=\overline{W}X+\overline{Y}+\overline{Z}+X
> $$
