在数字系统中除了机器码表示二进制数之外,还用四个二进制位表示一个十进制数,这种编码就叫BCD编码。
BCD码主要有8421、2421、余3码。
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)\)。
格雷码有一个特征:相邻的数值(比如3和4)只有一位不同。
在转换格雷码时,每一位上的数字分别进行计算,不同位上的数字相互独立。
格雷码转换回二进制码:
汉明码
码字:一个二进制数
码元:二进制数中的一位
码组:满足条件的码字的集合
码距:两个码字的异或和中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中出错了。
Comments NOTHING