一、特点
反正兄台都已经翻烂了,这里就简单描述:
可检错,可纠错
二、奇偶校验概念
-
偶校验:
即获取的二进制字符串中,“1” 的个数为偶数(双数)时,取值为0,否则为1。
例如:r0 = 1001⊕1111⊕1110⊕1101 = 0 (⊕ 为异或)
-
奇校验:
跟偶校验取值相反,当“1” 的个数为偶数(双数)时,取值为1,否则为0。
这里的海明码是用 偶校验
三、求海明码
1、数据位n位,校验位k位,公式:
假设数据位8位,引入上面公式得:
满足不等式最小值即为校验位个数,所以校验位有4位。
海明码总长度为:n+k 。所以为8+4=12位。
2、求解
令信息位为D7,D6,D5,D4,D3,D2,D1,D0,信息位从高往低占据编码位;
令校验位为P3,P2,P1,P0,校验位P0=2⁰=1,P1=2¹=2,P2=2²=4,P3=2³=8;
形成的海明码编码过程如下:
信息位D7的位数为12,12=8+4,所以D7的校验位组为P3(位数:8)和P2(位数:4),即信息位的位数=校验位组的位数之和。
由上表可得,P0参与了D0,D1,D3,D4,D6的检验,其他由此类推
P0=D0⊕D1⊕D3⊕D4⊕D6
P1=D0⊕D2⊕D3⊕D5⊕D6
P2=D1⊕D2⊕D3⊕D7
P3=D4⊕D5⊕D6⊕D7
这样子就可以算出整个海明码的值了。
四、例子:
设数据为01101001,求海明码。
数据位为8,则2⁴-1=15>8+4=12,则校验位为4位,即这个海明码长12位;
D7D6D5D4D3D2D1D0=01101001;
P0=2⁰=1,P1=2¹=2,P2=2²=4,P3=2³=8;
P0=D0⊕D1⊕D3⊕D4⊕D6=1⊕0⊕1⊕0⊕1=1
P1=D0⊕D2⊕D3⊕D5⊕D6=1⊕0⊕1⊕1⊕1=0
P2=D1⊕D2⊕D3⊕D7=0⊕0⊕1⊕0=1
P3=D4⊕D5⊕D6⊕D7=0⊕1⊕1⊕0=0
则海明码为011001001101
仅做位个人笔记。