这一知识点困扰我许久了,在光光的指导下,我们小组成功攻克海明码!彻底解决这一问题。
正文
一、奇偶校验码
1.概念:
通过在编码中增加一位校验位来使编码中的1的个数为奇数(奇校验)或偶数(偶校验),从而使码距为2
2.实践,前提条件:只有一位错误。
1)奇校验:
0001,加一位00011奇数的个数为2,所以编码不正确
2)偶校验:
0001,加一位00011偶数的个数为2,所以编码正确
3.作用
奇偶校验码只能查是否有错误,而且要求只有一位出现错误。
二、海明码
1.概念
海明码是一种很有效的校验方法,是只要增加少数几个校验位,就能检测出二位同时出错、亦能检测出一位出错并能自动恢复该出错位的正确值的有效手段,后者被称为自动纠错。
2.条件:设数据位是n位,校验位为k位,数据为01101001
第一步:分析表达式:2^k-1>=n+k
第二步:画表格(pi=2^i-1)
1)根据Pi=2(i-1)
P1=H(2(1-1))=H1
P2=H(2(2-1))=H2
.
.
.
依次算出P对应的H,结果如下表
H1 | H2 | H3 | H4 | H5 | H6 | H7 | H8 | H9 | H10 | H11 | H12 |
P1 | P2 | D0 | P3 | D1 | D2 | D3 | P4 | D4 | D5 | D6 | D7 |
2) 根据表格分析:D0对应的H3的下标3=2+1(从最大的开始找,3里面最大的是2),即H2对应的P2加上H1对应的P1;D0=P2+P1,依次算出。
数据位 | 海明码 | 校验位 |
D1 | H5 | P1+P3 |
D2 | H6 | P2+P3 |
D3 | H7 | P3+P2+P1 |
D4 | H9 | P4+P1 |
D5 | H10 | P4+P2 |
D6 | H11 | P4+P2+P1 |
D7 | H12 | P4+P3 |
4)结果
D1=P1+P3
D2=P2+P3
D3=P3+P2+P1
D4=P4+P1
D5=P4+P2
D6=P4+P2+P1
D7=P4+P3
5)第三步:求校验位P,从4)中找,有P1、P2、P3、P4的D1-D7
P1=D0⊕D1⊕D3⊕D4⊕D6; (这几个D的结果中都有P1)
P2=D0⊕D2⊕D3⊕D5⊕D6;
P3=D1⊕D2⊕D3⊕D7;
P4=D4⊕D5⊕D6⊕D7;
因为数据为:01101001对应着D7-D0,又因为同0异1(比如1⊕1=0,0⊕1=1)
故P1=1,P2=0,P3=1,P4=0
第四步:完整的海明码为:101100100110
3.作用
海明码可以查错,也可以纠错,限制较少
三、循环冗余校验码
1.概念
奇偶校验码和海明校验码都是采用奇偶检测为手段榆错和纠错的,而循环冗余校验则是通过某种数学运算来建立数据位和校验位的约定关系的
2.实践
f(x)=x4+x3+x+1
生成多项式:11011,因为4次方到0次方,只有2次方的位置没有数,故用0表示
原始报文110010101010011
原始报文除以多项式的结果就是循环冗余校验码.
四、码距
将其中所有的合法码字的最小距离值称为这个编码体制的码距
例如:
1100
1101之间码距为1,因为只有最低位翻转了。
而
1001
0010之间码距则为3,因为只有1位没有变化
小结
校验码总结仍有不足之处,如有指教,不胜感激。