zoukankan      html  css  js  c++  java
  • 海明码(汉明码)的工作机制

    一、海明码的形成方式:

      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) 位,以此类推。

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

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

                       位置了。

      

  • 相关阅读:
    MATLAB中的SFunction的用法(C语言)
    OpenGL中的转换矩阵
    MATLAB读取和写入Excel文件
    一阶微分方程的求解
    三对角矩阵(Tridiagonal Matrices)的求法:Thomas Algorithm(TDMA)
    CarSim与Simulink联合仿真
    三次样条插值(Cubic Spline Interpolation)及代码实现(C语言)
    在Simulink中创建库
    轮胎的魔术公式(Magic Fomula)模型
    C#中的编译时的类型与运行时的类型
  • 原文地址:https://www.cnblogs.com/studentWangqy/p/12594625.html
Copyright © 2011-2022 走看看