• 计算机系统知识(一)—海明码


    海明码校验

        当计算机存储或移动数据时,可能会产生数据位错误。这时能够利用汉明码来检測并纠错,简单的说,汉明码是一个错误校验码码集。

        了解海明码之前先了解一下异或:

        异或的数学符号为“⊕”。计算机符号为“xor”。其运算法则为:

        a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

        假设二进制下用1表示真,0表示假。则异或的运算法则为:

        0⊕0=0,

        1⊕0=1,

        0⊕1=1。

       1⊕1=0(同为0,异为1)。

     

     海明码的编码步骤

      1. 依据信息位数,确定校验位数,2r -1>k+r。当中,k为信息位数,r为校验位。

    求出满足不等式的最小r。即为校验位数。

    计算校验位公式如表所看到的。

    9

    8

    7

    6

    5

    4

    3

    2

    1

    位数

    I5

     

    I4

    I3

    I2

     

    I1

     

     

    信息位

     

    r3

     

     

     

     r2

     

     r1

    r0

    校验位

    2.  求校验位。依据上面所说的计算公式求出校验位。

    3.  求海明码。依据上面表格的填充。写出海明码。

    我们以希塞视频中的样例来理解:

    举例:若有效信息位为1101,求它的校验位

    依据上面的步骤我们可知

    1.  信息位为k=4位,那么2r -1≥k+r。求的r=3

    2.  列表。

    r位的校验位能够表示 2个数,和位数对齐后r0=1,r1=2,r2=4…等等。信息位即为我们上面的1101这4位信息。那么我们能够画出以下这张表

    7

    6

    5

    4

    3

    2

    1

      位数

      I4(1)

      I3(1)

       I2(0)

     

      I1(1)

     

     

      信息位

     

     

     

       r2

     

      r1

      r0

      校验位

     我们知道r0=20,r1=21,r2=22

     而信息位与所相应的位数关系为3.中

      I4:7=22 +21+20

      I3: 6= 22 + 21

      I2: 5= 22+20

      I1:3 =21+20 

      r0就用具有出现20的信息位表示,因此

      r0=I4⊕I2⊕I1=1⊕0⊕1=0;

      r1=I4⊕I3⊕I1=1⊕1⊕1=1;

      r2=I4⊕I3⊕I2=1⊕1⊕0=0;

      注:异或的公式里面假设出现偶数的1。则结果为0,反之为1

     4. 将得到的校验码输入上表中,得出

      7

      6

      5

      4

      3

      2

      1

       位数

      1

      1

      0

     

      1

     

     

      信息位

     

     

     

       0

     

       1

      0

       校验位

      5.综上海明码结果为:1100110

    关于纠错下篇介绍...

  • 相关阅读:
    2018QBXT刷题游记(4)
    洛谷 P4302 字符串折叠 题解
    hdu5009 Paint Pearls 题解
    CF467C George and Job 题解
    洛谷P2622 关灯问题II 题解
    洛谷 P3049园林绿化 题解
    洛谷 P1064 金明的预算方案 题解
    洛谷P1979 华容道 题解
    2018QBXT刷题游记(3)
    2018QBXT刷题游记(2)
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6979799.html
Copyright © 2020-2023  润新知