数字逻辑学习笔记:BCD码

发布于 2022-09-06  387 次阅读


在数字系统中除了机器码表示二进制数之外,还用四个二进制位表示一个十进制数,这种编码就叫BCD编码。

BCD码主要有8421、2421、余3码

BCD码表

8421 BCD码

四个二进制位一共可以组成\(x^4=16\)个十进制数,而十进制数只有\(0 \sim 9\)这十个,所以是够用的。

因为BCD的四个二进制位的位权分别是\(2^3, 2^2, 2^1, 2^0\)所以这是8421码

举个例子,\(238_{(10)} = (0010,0011,1000)_{(8421BCD)}\),\((1001,0100,0001)_{(8421BCD)} = 941_{(10)}\)。

在8421BCD编码中不允许出现\(1010 \sim 1111\)这6个二进制编码

2421 BCD码

2421BCD码与8421的区别就是位权是\(2^1, 2^2,2^1,2^0\)也就是\(2, 4, 2, 1\)。

2421对于8421的优越性是只需要知道0~4的2421BCD,就可以通过按位取反得到5 ~ 9的2421BCD码,比如\(2(取反) = 9 - 2 = 7\),\(4(取反) = 9 - 4 = 5\),也就是说2421BCD码存在对称性。

所以2421BCD码也叫作“对9的互补编码”

举例\(8_{(10)}=(\sim(0001))_{(BCD2421)}=(1110)_{(BCD2421)}\)。

余3码

余3码用了16个二进制数中的第3~12位,也就是中间10位,所以\(余3码 = 8421BCD + 3\)。

同时,余3码也是一种对9的互补编码

余3码在加法时的特性(有加无减):

  • 两个余3码相加,如果对高位无进位,则结果需要减去\(3_{10} = 0011_{2}\)。
  • 两个余3码相加,如果对高位有进位,则结果需要加上\(3_{10} = 0011_{2}\)。

可靠性编码

可靠性编码主要有奇偶校验码和格雷码。

奇偶校验码

奇偶校验码是由信息位加上一个校验位组构成的,信息位是数字系统中传输数据的通路。

如果整个数据中1的个数是奇数,则称为奇校验,如果1的个数是偶数,则成为偶校验。

校验位是用来校验数据在传输过程中是否出错的,如果同时偶数位都出错,那么奇偶校验码就查不出来,如果只有奇数位发生变化,也不知道具体是哪些数据错了,只能重新发送和接收数据了。

格雷码

格雷码转换规则是第一位保留,剩下的每一位都是两位的异或和\(G(i) = B(i) \xor B(i+1)\)。

格雷码计算规则(7字型走位)

格雷码有一个特征:相邻的数值(比如3和4)只有一位不同。

在转换格雷码时,每一位上的数字分别进行计算,不同位上的数字相互独立。

格雷码转换回二进制码:

格雷码转换二进制码规则(Z字走位)

汉明码

码字:一个二进制数

码元:二进制数中的一位

码组:满足条件的码字的集合

码距:两个码字的异或和中1的个数。

比如有一个4位的BCD码B,需要3位校验位P,那么汉明码结构为:

\(B_{4} B_{3} B_{2} P_{3} B_{1} P_{2} P_{}\)

校验位P放在\(2^k,(k = 0,1,2...)\)的位置,这是为了方便B进行分组。

\(B_{4}\)在第7位,7进行二进制分解\(7 = 4 + 2 + 1 = 2^2 + 2^1 + 2^0\),这分别表示第3、2、1个P,所以\(B_{4}\)会在\(P_{3}, P_{2}, P_{1}\)上进行异或。

所以有:

  • \(P_{3} = B_{4} \oplus B_{3} \oplus B_{2}\)
  • \(P_{2} = B_{4} \oplus B_{3} \oplus B_{1}\)
  • \(P_{1} = B_{4} \oplus B_{2} \oplus B_{1}\)

在解码时如果某一个P非0,说明对应的B中出错了。

19岁,性别未知,ACM-XCPC退役选手,CCPC全国邀请赛金牌,ICPC亚洲区域赛银牌,武汉某院校计算机科学与技术专业本科在读。
最后更新于 2022-09-06