一、海明码
1.1.基本概念
- 海明码是奇偶校验的一种扩充。和奇偶校验的不同之处在于海明码采用多位校验码的方式,在这些多个校验位中的每一位都对不同的信息数据位进行奇偶校验,通过合理地安排每个校验位对原始数据进行地校验的位组合,可以达到发现错误、纠正错误的目的(当出现两位错误时,海明码能够查错,但无法纠错)
- 还需要记住以下几个关键的关系
- 可查出多少位错误:可以发现"≦码距-1"位的错误
- 可以纠正多少位错误:可以纠正“<码距/2”位的错误,因此如果要能够纠正n位错误,所需最小的码距应该是“2n+1”
1.2.海明码的原理
- 在数据中间加入几个校验码,码距均匀拉大,当某一位出错,会引起几个校验位的值发生变化
1.3.海明不等式
- 校验码个数为k,可以表示2k个信息,1个信息用来表示"没有错误",其余2k-1个表示数据中存在错误,如果满足2k-1≧m+k(m+k为编码后的数编总长度),则在理论上k个校验码可以判断是哪一位(包括信息码和校验码)出现了问题
1.4.海明码的编码规则
- 校验位依次放在第2i(i=0,1,2,3...)位,其余位置为信息位
k3 | k2 | k1 | r2 | k0 | r1 | r0 |
---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 |
-
4个信息位k0,k1,k2,k3;3个校验位r0,r1,r2
-
第i个信息位的位数为参与校验它的校验位的位数之和,如上例:7=4+2+1;6=4+2;5=4+1;3=2+1