Bootstrap

海明码知识总结

基础概念

海明码的构成方法是在数据位之间的特定位置2^n (n为正整数) )上插入k个检验位,通过扩大码距来实现检错和纠错。
海明码(也叫汉明码)具有一位纠错能力。
海明码默认进行偶校验(除非特殊说明使用奇校验)。
海明码本质: 对数据位分组奇偶校验

1.1 求海明码中校验位位数

已知海明码 n+k 位, 其中数据位是 n 位,校验位是 k 位,则 n 和 k 必须满足以下关系:

2k -1 ≥ n+k

即n+k 位海明码,对 n 位数据位分为 k 组进行奇偶校验的结果。
例如: 编码前有效信息为10011101,求校验位位数?
数据位 n = 8;k 可依次用正整数(1,2,3,4…)带入公式可的最小的 k=4 ,即对 8 位数据位分为 4 组进行奇偶校验。

1.2. 求海明码中校验位位置

校验位在海明码中的位置为 2n (n为正整数)(即 20=1、21=2、22=4、23=8…)
例如:当校验位为4位时(即k=4)校验位位置分布如下表, P代表校验位。
在这里插入图片描述

1.3.求海明码中校验位数值

海明码本质: 对数据位分组奇偶校验。
分组方式:按照海明码中校验位位索引(B)中1的位置(第X位为1)对数据位分组,即数据位位索引(B)中同位置(第X位)为1的数据位为一组。
求P1:
在这里插入图片描述
此时第3、5、7、9、11为一组,此组数据位中奇数个1,为保证偶校验,则此时P1应取1,即P1=1。
求P2:
在这里插入图片描述
此时第3、6、7、10、11为一组,此组数据位中奇数个1,为保证偶校验,则此时P2应取1,即P2=1。
求P3:
在这里插入图片描述
此时第5、6、7、12为一组,此组数据位中偶数个1,为保证偶校验,则此时P3应取1,即P3=0。
求P4:
在这里插入图片描述
此时第9、10、11、12为一组,此组数据位中奇数个1,为保证偶校验,则此时P4应取1,即P4=1。
到此整个编码工作结束,完整的海明码则为:
在这里插入图片描述

1.4.海明码校验纠正

校验

假设上述中的海明码 111000111101 的第10位在传输中出现错误,由1变为0,即为111000111001 。
在这里插入图片描述
海明码本质: 对数据位分组奇偶校验,则校验按分组校验。
直接数各组中1的个数,奇数为1偶数为0,或使用异或运算
G1组:1(P1)、3、5、7、9、11      G1=P1⊕D3⊕D5⊕D7⊕D9⊕D11 = 1⊕1⊕0⊕1⊕1⊕0 = 0
G2组:2(P2)、3、6、7、10、11     G2=P2⊕D3⊕D6⊕D7⊕D10⊕D11 = 1⊕1⊕0⊕1⊕0⊕0 = 1
G3组:4(P3)、5、6、7、12       G3=P3⊕D5⊕D6⊕D7⊕D12 = 0⊕0⊕0⊕1⊕1 = 0
G4组:8(P4)、9、10、11、12       G4=P4⊕D9⊕D10⊕D11⊕D12 = 1⊕1⊕0⊕0⊕1 = 1
G2、G4=1,此次使用的是偶校验规则,所有表示数据有错误。

定位错误位

排除法

没有出错的组,表示组内的位都是正确的,则可以通过没有出错组内的位排除定位错误位。
使用G1、G4中的位排除后:
G2组:2(P2) 、10
G4组:8(P4)、10
两组共同存在的位为10号位,则错误位为10号位。

计算法

按校验位降序排列可得G4 G3 G2 G1(二进制高位在左),设出错位为N,则得公式N = G4 G3 G2 G1,即 N=1010 转换成十进制得10,则说明,接收端得到的海明码第10位出现了传输错误(很神奇,没搞清楚原理)。

纠错

二进制位非0即1,当判断出是哪位出错对该位取反即可。则经过纠正的海明码为111000111101 ,与发送端保持了一致。

;