海明码(汉明码)的工作机制

一、海明码的形成方式:

  1、首先海明码是由信息位和校验位组成的

  2、信息位校验位的关系 校验位的位数r  信息位的位数i  2^r - 1 >=  i+r 

  3、校验位的位置是2的整数次方 如 1 2 4 8 ......

  4、海明码位数分组 

    (因为海明码其实是分组的奇偶校验码,所以有个分组的概念)

       1 - 1、3、5、7

       2 - 2、3、6、7

       4 - 4、5、6、7

      规律是:海明码的每一位数都由若干校验位校验,校验位本身也被校验。

                                 每个被校验位的位数(即在海明码中的位置)等于校验位位数的和

  5、分组后 计算校验位的方式:

     配偶原则:该组的1的个数为偶数个 ∑pi % 2=0 

      配奇原则 :该组的1的个数为奇数个∑pi % 2=1

二、海明码为什么可以校验1位错?

          1、为什么能发现错

                 由于海明码在生成时,就按照配偶原则或者配奇原则来,因此只要有错误,我们就会从校验组的

                  计算中发现,如按配偶原则来生成的海明码,发现某一组中1的个数为奇数,那就说明这一组出

                  了一个错。

         2、怎样确定是哪一位错

                  我们需要计算出每一组的“配置参数”,(这个词是我自己造的)配置参数为1,代表该组的1的个

                   数 不符合生成时的配置原则,配置参数为0代表该组1的个数符号生成海明码时的配置原则。

                  根据由各组的配置参数按组号从大到小顺序组成的一串2进制数,我们可以直接算出哪一位错

                  了。

          3、为什么可以发现是哪一位错?

                   因为分组时,第i组独占第2^(i-1) 位,第i组和第j组共享第2^I'(i-1)+2^(j-1) 位,以此类推。

                   因此,在我们找是哪里出错时,我们可以通过计算每一组的配置参数来看该组有没有出错

                   只要把每一组的配置参数都算出来,就可以根据被校验位共享的机制,精确计算出出错位的

                   位置了。

  

原文地址:https://www.cnblogs.com/studentWangqy/p/12594625.html