• Hamming Codes


    1. 海明校验码检错采用的是分组交叉奇偶校验法。
         将编码中的数据位分成r个校验组,组内采取奇偶校验,每组一个校验位,可构成r位检错码。r>1
         全部检错码为0表示数据正常,不为零时检错码的值表示编码中出错数据位。

    2. 编码方式:每一数据位至少参加2个校验组,一位出错,可引起多个检错码的变化。
        •设海明码 N 位,其中数据位 k 位,校验位 r 位
        •校验位 r 位表示共 r 个校验组
        •N=k+r≤2r-1
        例如我们课上讲的(4,3)编码:4个数据位,3个校验位。其编码如下
               H7 H6 H5 H4 H3 H2 H1
               D4 D3 D2 P3 D1 P2 P1
        包含G3 G2 G1个校验组,P3 P2 P1分属其中一组:
        其中 P1=D1⊕D2⊕D4      P2=D1⊕D3⊕D4      P3=D2⊕D3⊕D4
          G1=P1⊕D1⊕D2⊕D4     G2=P2⊕D1⊕D3⊕D4     G3=P3⊕D2⊕D3⊕D4
       对应的位数: G1(P1,H3,H5,H7) G2(P2,H3,H6,H7) G3(P3,H5,H6,H7)
       然后根据G3G2G1就可以判断出错位。(只能检验纠正一位出错位)

    不过貌似老师也没讲具体标志位的位置是怎么确定的,下面是我找到的一些资料:

    3. 码字(Code Word) 按如下方法构建:
      (1)、把所有2的幂次方的数据位标记为奇偶校验位(编号为1, 2, 4, 8, 16, 32, 64等的位置)
      –(4,3)编码中的P1,P2,P3存放的位置H1,H2,H4
      (2)、其他数据位用于待编码数据. (编号为3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17等的位置)
      –(4,3)编码中的D1-D4
      (3)、每个奇偶校验位的值代表了代码字中部分数据位的奇偶性,其所在位置决定了要校验和跳过的比特位顺序。
        位置1:校验1位,跳过1位,校验1位,跳过1位(1,3,5,7,9,11,13,15,…)
        位置2:校验2位,跳过2位,校验2位,跳过2位 (2,3,6,7,10,11,14,15,…)
        位置4:校验4位,跳过4位,校验4位,跳过4位 (4,5,6,7,12,13,14,15,20,21,22,23,…)
        位置8:校验8位,跳过8位,校验8位,跳过8位(8-15,24-31,40-47,…)
      –(4,3)编码中P1=D1⊕D2⊕D4(H1,H3,H5,H7) P2=D1⊕D3⊕D4 P3=D2⊕D3⊕D4

    4. 采用偶校验,如果全部校验的位置中有奇数个1,把该奇偶校验位置为1;
      如果全部校验的位置中有偶数个1,把该奇偶校验位置为0.

    5. 小例子:待传送数据(一个字节):10011010
      构造海明码, 对应的校验位留空 _ _ 1 _ 0 0 1 _ 1 0 1 0
      然后计算每个校验位的奇偶性 :
      P1检验1,3,5,7,9,11位,发现有偶数个1(自己数数看),所以P1=0;
      P2检验2,3,6,7,10,11位,发现有奇数个1,所以P2 =1;
      P3检验4,5,6,7,12位,发现有奇数个1,所以P3 =1;
      P4检验8,9,10,11,12位,发现有偶数个1,所以P4 =0;
      因此最后的编码为: 011100101010.
      假定实际接收到的数据 011100101110. 则第10 位出错。

    ---------------------------------------------------------------------------------

  • 相关阅读:
    指针类型
    集合类型
    VMware打开虚拟机没反应的解决方案(全面汇总)
    redis主从|哨兵|集群模式
    MYSQL一次千万级连表查询优化
    StackExchange.Redis通用封装类分享
    Redis-五种数据类型解析
    Redis并发问题
    C#委托和事件
    Invoke 和 BeginInvoke 的区别
  • 原文地址:https://www.cnblogs.com/chenbjin/p/3163741.html
Copyright © 2020-2023  润新知