数字电路 - 代码
在编码中,当数字或字母由一组特定的符号表示时,就称该数字或字母正在被编码。这组符号称为代码。数字数据以位组的形式表示、存储和传输。这组位也称为二进制码。
二进制代码可以分为两类。
- 加权代码
- 未加权代码
如果代码具有位置权重,则称其为加权代码。否则,它是未加权的代码。加权码又可以分为正加权码和负加权码。
十进制数字的二进制代码
下表显示了十进制数字 0 到 9 的各种二进制代码。
小数位 | 8421 代码 | 2421 代码 | 84-2-1代码 | 多余3码 |
---|---|---|---|---|
0 | 0000 | 0000 | 0000 | 0011 |
1 | 0001 | 0001 | 0111 | 0100 |
2 | 0010 | 0010 | 0110 | 0101 |
3 | 0011 | 0011 | 0101 | 0110 |
4 | 0100 | 0100 | 0100 | 0111 |
5 | 0101 | 1011 | 1011 | 1000 |
6 | 0110 | 1100 | 1010 | 1001 |
7 | 0111 | 1101 | 1001 | 1010 |
8 | 1000 | 1110 | 1000 | 1011 |
9 | 1001 | 1111 | 1111 | 1100 |
我们的十进制数有 10 位。为了用二进制表示这 10 位数字,我们至少需要 4 位。但是,对于 4 位,将有 16 种独特的 0 和 1 组合。由于我们只有 10 位十进制数字,因此不需要其他 6 种 0 和 1 的组合。
8 4 2 1 代码
该代码的权重为 8、4、2 和 1。
该代码具有所有正权重。所以,它是一个正权重的代码。
该代码也称为自然 BCD(二进制编码十进制)代码。
例子
让我们找出十进制数 786 的 BCD 等值。这个数有 3 个十进制数字 7、8 和 6。从表中我们可以写出 7、8 和 6 的 BCD(8421)代码分别是 0111、1000 和 0110 。
∴ (786) 10 = (011110000110) BCD
BCD 表示法有 12 位,因为十进制数的每个 BCD 码有 4 位。
2 4 2 1 代码
该代码的权重为 2、4、2 和 1。
该代码具有所有正权重。所以,它是一个正权重的代码。
这是一个不自然的 BCD码。非自然BCD码的权重之和等于9。
它是一个自补代码。自补码只需交换其等效 2421 表示形式中的 1 和 0,即可提供十进制数 9 的补码。
例子
让我们求出十进制数786的2421等值。这个数有3个十进制数字7、8和6。从表中我们可以写出7、8和6的2421代码分别是1101、1110和1100。
因此,十进制数 786 的 2421 等价物是110111101100。
8 4 -2 -1 代码
该代码的权重是8、4、-2和-1。
该代码具有负权重和正权重。所以,它是一个负权码。
这是一个不自然的 BCD码。
它是一个自补代码。
例子
让我们找到十进制数 786 的 8 4-2-1 等值。这个数字有 3 个十进制数字 7、8 和 6。从表中,我们可以写出 7、8 和 6 的 8 4 -2 -1 代码分别是1001、1000和1010。
因此,十进制数 786 的 8 4 -2 -1 等价物是100110001010。
多余3个代码
该代码没有任何权重。所以,它是一个未加权的代码。
通过将 3 (0011) 添加到该十进制数的等价二进制数中,我们将得到该十进制数的多余 3 代码。因此,它被称为Excess 3代码。
它是一个自补代码。
例子
让我们找到十进制数786的Excess 3等值。这个数字有3个十进制数字7、8和6。从表中我们可以写出7、8和6的Excess 3代码分别是1010、1011和1001。
因此,十进制数 786 的 Extra 3 等价物是101010111001
格雷码
下表显示了每个 4 位二进制码对应的 4 位格雷码。
十进制数 | 二进制代码 | 格雷码 |
---|---|---|
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 |
该代码没有任何权重。所以,它是一个未加权的代码。
在上表中,连续的格雷码仅在一位位置上有所不同。因此,该码被称为单位距离码。
二进制码到格雷码的转换
按照以下步骤将二进制代码转换为其等效的格雷码。
考虑给定的二进制代码并在 MSB 左侧放置一个零。
比较从零开始的连续两位。如果这 2 位相同,则输出为零。否则,输出为一。
重复上述步骤,直到得到格雷码的LSB。
例子
从表中我们知道二进制码1000对应的格雷码是1100。现在我们用上面的过程来验证一下。
给定,二进制代码是 1000。
步骤 1 - 通过在 MSB 左侧放置零,二进制代码将为 01000。
步骤 2 - 通过比较新二进制代码的连续两位,我们将得到格雷码1100。