是人都能看得懂的------海明校验码以及循环冗余(计算机组成原理)

本文详细介绍了海明码的工作原理,包括如何确定校验位、插入校验码、进行异或操作以及如何进行错误检测和纠正。通过一个具体的例子展示了如何将1010数据编码并进行纠错,强调了海明码在数据传输中的重要性,即不仅能检测错误,还能指出错误发生的位置。
摘要由CSDN通过智能技术生成

海明码的作用:不但能够检验出错,还能查出哪一位出错了。


例如传送过来的数据是
:1010
(k表示校验码的位数)
(n表示例如1010表示n=4)



第一步--->通过公式找到k值;
          --->2^k>=n+k+1;
          --->k=3;



第二步 给1010每一个位标上位置;
          --->  1   0    1     0 
          --->D4 D3  D2  D1



第三步 找到校验码插入的位置;
          (已知k=3,有三位校验码)
          --->p1=(2^i-1)=1;
          --->p2=(2^i-1)=2;
          --->p3=(2^i-1)=4;



第四步:将校验码插入编码的位置排列;
          --->H7  H6  H5  H4  H3  H2  H1
          --->D4  D3  D2  p3   D1  p2  p1
          ---> 1     0     1            0


第五步:将每位数据对应的位置记下来,通过
十进制转成二进制();
          --->       位            十进制           二进制
          --->D1   H3:              3               0   1   1
          --->D2   H5:           5               1   0   1
          --->D3   H6:              6               1   1   0
          --->D4   H7:              7               1   1   1



第六步:进行异或操作(这里用@代替异或操作);
(异或口诀:同为0,异为1)
(这里要注意如果上面的二进制位,某一位为0,则不能加入下面异或操作,
比如二进制位看,从上往下看,,竖列,则D3无法加入到p1里面异或如下)
          --->p1=D1@D2@D4=0@1@1=0;
          --->p2=D1@D3@D4=0@0@1=1;      --->表示错误->2;
          --->p3=D2@D3@D4=1@0@1=0;



第七步:将刚才p1p2p3得到得数字放到1010中去,得到
          --->D4  D3  D2  p3   D1  p2  p1
          --->1     0     1      0     0    1    0
接收到得数据:1010010;



第八步:纠错进行偶检验;
          --->s1=p1@D1@D2@D4=0@0@1@1=0;
          --->s2=p2@D1@D3@D4=1@0@0@1=0;      
          --->s3=p3@D2@D3@D4=0@1@0@1=0;
          --->都为0则表示无错误;
//
如果出错得话例如p2=0等话;
          --->s1=p1@D1@D2@D4=0@0@1@1=0;
          --->s2=p2@D1@D3@D4=0@0@0@1=1;     --->(010)换成十进制表示第2位出错  
          --->s3=p3@D2@D3@D4=0@1@0@1=0;
          --->(010)第二位出错,按位取反;
这就是海明校验码;

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值