海明码的计算方法详解
海明码详解
发现双比特错,纠正单比特错
计算方法:
海明不等式:2^r>=k+r+1 其中r为冗余校验位, k为该数据信息位 最后的信息数据位数位:k+r
举例:
要发送的数据为:101101
1、则k=6; 求得r=4满足海明不等式
因此有4冗余校验码,因此最终要发送的数据为:信息位+冗余位=10
这4位冗余校验码再数据中的位置是2^r-1
2、因此令这四位用p1,p2,p3,p4来表示
所在位置位为p1=1,p2=2,p3=4,p4=8,如下列表格所示
将原本数据以D1,D2,D3,D4,D5,D6来表示,填入下面表格
3、填入初始数据到相应位置:如下面表格所示
4、下面将求出冗余码的各个数
方法:将所有要检验的位异或=0
P1: P1所在二进制中的1位为最后一个,因此表中最后一位是1的则是P1要校验的位:
因此:p1⊕D1⊕D2⊕D4⊕D5 令其等于0 将D的实际值代入 求得P1=0
P2⊕D1⊕D3⊕D4⊕D6 令其等于0 将D的实际值代入 求得P2=0
P3⊕D2⊕D3⊕D4 令其等于0 将D的实际值代入 求得P3=0
P4⊕D5⊕D6 令其等于0 将D的实际值代入 求得P4=1
因此要发送的数据为0010011101
接收方怎么判断出错的是哪位呢?
我们可以假设第5位出错,因此接收方接收到的数据是:0010111101
令所有要检验的位异或运算
p1⊕D1⊕D2⊕D4⊕D5=1
P2⊕D1⊕D3⊕D4⊕D6=0
P3⊕D2⊕D3⊕D4=0
P4⊕D5⊕D6 =1
最后从P4~P1方向写出 1001=5
因此判断出第5位出错,只需将第5位进行取反即可对该数据纠错