本人第一次接触编码纠错检错,如果说的有问题,希望大佬可以无情的辱骂。
1.汉明码检错的目标。
2.汉明码检错的原理。
>汉明码检错的目标:
汉明码为了检测一串数据中是否有一位错码,当两位错码时,配奇配偶会失败,检测两位超出了汉明码的能力。
>汉明码检错的原理:
汉明码的检错核心思想是用检错位标记所有的编码,假设总位数为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。)