问答题 使用海明编码发送16位报文,需要多少个检查位才可以保证接收方能够监测并纠正单个位错?说明对于报文“1101001100110101”发送的位图案。假定在海明编码中使用偶检验。
【正确答案】
【答案解析】在海明编码中,假定有m个信息位和r个检查位,并且允许单个错可以被纠正。对应2 m 个合法消息中的每一个都有n个跟它相距1的非法码字。它们是通过把n位码字中的每一位变反形成的。这样2 m 个合法消息中的每一个都有n+1种位图案相对应。由于n=m+r,位图案总数是2 n ,显然必须使(n+1)2 m ≤2 n ,将n=m+r代入,得到
(m+r+1)≤2 r
这一关系式可以由海明提出的组码方法得以保证。将最终码字各位从1开始依次由左向右编号,让是2的幂的序号的位成为检查位,其余位填充m位数据。每个检查位都是包括它自己在内的某个位集合计算偶(或奇)检验的结果。一个数据位跟哪n个检查位有关可以通过将其序号写成2的幂的和的形式得知。
例如,11=1+2+8,29=1+4+8+16,那么(11,1,2,8)和(29,1,4,8,16)都是检查奇偶性的位集合。
在本题中m=16,在最后码字的1、2、4、8和16位置上加检查位,r=5。由于包括检查位在内,码字长度不会超过31,所以5个奇偶位足够了。
0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 1
1=1,2=2,3=1+2,4=4,5=1+4,6=2+4,7=1+2+4,8=8,9=1+8,10=2+8,
11=1+2+8,12=4+8,13=1+4+8,14=2+4+8,15=1+2+4+8,16=16,17=1+16,18=2+16,19=1+2+16,20=4+16,21=1+4+16
所以,1→1+3+5+7+9+11+13+15+17+19+21
2→2+3+6+7+10+11+14+15+18+19
4→4+5+6+7+12+13+14+15+20+21
8→8+9+10+11+12+13+14+15
16→16+17+18+19+20+21
所以发送的位图案是“011110110011001110101”。