根据汉明编码的纠正
首先了解汉明码的组成,设欲检测的二进制代码为n位,需要添加k位检测位,组成n+k位的代码
他们的关系是 2^k>=n+k+1
代码长度n与检测位数k的关系
n | k |
---|---|
1 | 2 |
2~4 | 3 |
5~11 | 4 |
12~26 | 5 |
确定K位后,设n+k位二进制代码从左向右的顺序依次位1,2,3,4,5,……n+k位
(1)将k位的检测位记作Ci(i=1,2,4,8,16……),分别安插在n+k位二进制代码的1,2,4,8位上。
(2)C1即二进制代码中第一位为1的,如1,11,101,111,1001,1011等(1,3,5,7,9,……)
C2即二进制代码中第二位为1的,如10,11,110,111,1010,1011等(2,3,6,7,10,11)
C4即二进制代码中第三位为1的,如100,101,111,1100,1101等(4,5,6,7,12,……)
C8即二进制代码中第四位为1的,如1000,1001,1011,1111等(8,9,10,11,12,……)
(3) 实际C1就是安排在n+k位二进制代码的第1位上,C2是第2位,C4是第4位,C8是第8位,以此类推
在配奇/配偶时,C1=第1,3,5,7,9位相加
C2=第2,3,5,7,9位相加以此类推
安插顺序如下,例如欲检测的代码为4位,则需要安插3位检测位,计算方法为2^k>=n+k+1,
即2 ^k>=k+4+1,k=3。
所以安插的检测位为C1,C2.C4
C1检测第1位,C2检测第2位,C4检测第4位
原二进制代码设为B4B3B2B1
奇偶检测任务
配奇/配偶?
配奇就是要求检测位上的“1”的个数为奇
配偶就是要求检测位上的“1”的个数为偶
例题
设欲检测码为1100111,按配奇原则来配置汉明码,求汉明码
因为欲检测二进制代码为7位,则2^k>=n+k+1,得出k=4
那么安插的检测位为
C1=第1,3,5,7,9,11位相加,即C1+1+1+0+1+1=1,所以C1=1
C2=第2,3,6,7,10,11位相加,即C2+1+0+0+1+1=1,所以C2=0
C4=第4,5,6,7位相加,即C4+1+0+0=1,所以C4=0
C8=第8,9,10,11位相加,即C8+1+1+1=1,所以C8=0
所以1100111的汉明码为10101000111
汉明码的纠错过程
已知接收到的汉明码为0100111(按配偶原则),则欲传送的信息是?
因为接收到的汉明码是7位,由上表可求得需插入的检测位k=3,每个检测位上“1”的个数为偶
C1=第1,3,5,7位相加,即C1+B4+B3+B1=0,0+B4+B3+B1=0,其中两个1或无1
C2=第2,3,6,7位相加,即C2+B4+B2+B1=0,1+B4+B2+B1=0,其中一个1或三个1
C4=第4,5,6,7位相加,即C4+B3+B2+B1=0,0+B3+B2+B1=0,其中两个1或无1
得出结果是B4=0,B3=1,B2=0,B1=1
所以欲传送的信息是0101
来源:CSDN
作者:csdnxiaoxu
链接:https://blog.csdn.net/csdnxiaoxu/article/details/103840912