按照奇校验配置的汉明码0101011的纠错过程

按照奇校验配置的汉明码0101011的纠错过程,第1张

因纠错理论知,纠错位3位,分别在C1、C2、C4位置

P1=C1同或C3同或C5同或C7=0001=0

P2=C2同或C3同或C6同或C7=1011=0

P3=C4同或C5同或C6同或C7=1011=0

与偶校验不同的是,纠错过程中,偶校验用异或,奇校验用同或

汉明码的检测码的p1计算的是C1位所在的第一组偶(奇)校验是否出错,有错就是1否则为0,p2计算的是C2位配置的第二组偶(奇)校验是否出错,有错就是1否则为0,,p3计算的是C3位配置的第三组偶(奇)校验是否出错,有错就是1,否则为0。p1,p2,p3他们的下标减1之后代表他们实际上的二进制的位权。所以p1p2p3计算出来是110,而答案是p3p2p1是011反着写表示十进制的3,也就是指出接收到汉明码第3位出错。这里的3是指这个接收到的汉明码从左往右数的第3位。这是因为汉明码编码时候就是从左往右编码的,序号分别是1,2,3,4,5,6... 再回顾2^k>=N+k+1这个汉明码编码公式限制条件,N是实际数据位数,插入的k位检测位它的二进制组合能表示的2^k要求不仅能检测出N位代码的某一位出错的N种情况,还有全不出错的这种情况1,同时也能检测出插入的k位检测位是否出错。所以2^k要求大于等于N+k+1,否则编码距离不能覆盖整个汉明码的长度。同时我们也知道了,每个插入的检测位所在组在纠错的时候求的p1,p2,p3都是对应有位权的。

我回答了你的问题了吗?

本人第一次接触编码纠错检错,如果说的有问题,希望大佬可以无情的辱骂。

汉明码为了检测一串数据中是否有 一位 错码,当两位错码时,配奇配偶会失败,检测两位超出了汉明码的能力。

汉明码的检错核心思想是用检错位标记所有的编码,假设总位数为n,检错位为k,那么就需要2^k>n,如此K位所携带的信息就可以完全标记n位编码。

那么检错码所含信息如何表示?

我们将第i位检错码放于数据的第2^i位(此 *** 作是为了让检错码不检错其他检错码,检错码检错其他检错码会绑定两个检错码,造成的结果是浪费一位), 用第i位检错码为 所有位数在第i位上为1的数据位配奇或配偶 (后描述为配偶,因为配奇的原理相同,配偶 *** 作将所有配偶数据的1收集,用检错位配成偶数个1,若检测到配偶及检错数据仍为奇数个1,则出现错误)。

如此,当汉明码检测到第i检错位配偶错误时,有:错误码的i位为1。

当汉明码检测到第i检错位配偶正确时,若有错误码,则错误码的i位为0。

隐含的,当汉明码所有位配偶全部正确时,无错误码。

如此我们可以根据检错位从高到低直接组成二进制来定位错误编码位置。

这里主要是理解 (用第i位检错码为所有位数在第i位上为1的数据位检错=>当汉明码检测到第i检错位配偶错误时,错误码的i位为1。)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12068208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存