数字电路 - 代码


在编码中,当数字或字母由一组特定的符号表示时,就称该数字或字母正在被编码。这组符号称为代码。数字数据以位组的形式表示、存储和传输。这组位也称为二进制码

二进制代码可以分为两类。

  • 加权代码
  • 未加权代码

如果代码具有位置权重,则称其为加权代码。否则,它是未加权的代码。加权码又可以分为正加权码和负加权码。

十进制数字的二进制代码

下表显示了十进制数字 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