![]() ![]() 汉明码编码的纠错原理 出自:http://user.qzone.qq.com/48052347/blog/1297330476 参考:汉明码校验原理解析 甘家宝 1. 简介: 当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,由Bell实验室的R.W.Hamming发明,因此定名为汉明码。 2. 汉明码的定义和汉明码不等式: 设:m=数据位数,k=校验位数为,n=总编码位数=m+k,有Hamming不等式: 1. 汉明码不等式含义: a) 总数据长度为N,如果每一位数据是否错误都要记录,就需要N位来存储。 b) 每个校验位都可以表示:对或错;校验位共K位,共可表示2^k 种状态 c) 总编码长度为N,所以包含某一位错和全对共N+1种状态。 d) 所以2^k≧N+1 e) 数据表见下 2. Hamming码缺点: 无法实现2位或2位以上的纠错,Hamming码只能实现一位纠错。 3. 以典型的4位数据编码为例,演示汉明码的工作过程 a) 数据存储格式: 依照此前的汉明码不等式计算出,当数据位为4位时,汉明码校验位至少为3位,如上方式排列 可以看的出D8、D4、D2、D1中的数字都是2的整数幂 b) 汉明校验码的插入规律: l 设:编码位代号k,校验码位代号p,数据位代号n l 某个校验码Pp将处于整个编码的第k位 l k=2^(p-1)=2的(p-1)次方 l 以数据位为5的一组9位数编码为例,如下: c) 校验位与数据位的对应关系: 注:^是逻辑运算符异或. P1=D8^D4^D1 P2=D8^D2^D1 P3=D4^D2^D1 小解释:数据位共4位每行等式都缺少一位,而缺少的这位数据位正好是DX,等式左边的校验位为PY,X=2^y(2的y次方) d) 校验位如何参与计算: P1’=P1^D8^D4^D1 P2’=P2^D8^D2^D1 P3’=P3^D4^D2^D1 从高到低排列的二进制数:P3’ P2’ P1’表示的就是出错的编码位,从000-011-101-110-111共5种组合,其中000表示没错,011表示第三位错误,101,110,111分别表示第5,6,7位错误。可表示原数据位D8D4D2D1某一位错&没错的一共5种状态. e) 设有一数字为:1101,带入运算: l D8=1、D4=1、D2=0、D1=1, l P1 =1,P2=0、P3=0。 l 汉明码处理的结果就是1010101 l 假设:D8出错,P3’ P2’ P1’=011=十进制的3,即表示编码后第三位出错,对照存储格式表,果然就是D8错误. l 假设:D4错误,P3’ P2’ P1’=101=十进制的5,即表示编码后第五位出错,对照存储格式表,果然就是D4错误. |
汉明码编码的纠错原理
最新推荐文章于 2024-10-28 11:20:57 发布