海明校验码

原理:
    实际上就是在一个n个二进制数据序列的信息码位之外加上k个二进制数据序列的检验码位,从而形成一个n+k位的二进制数据序列的码字。校验位的位置,位于整个完成编码的2^n的位置。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。
公式说明:
    n为信息位的个数;K为校验位的个数
    2^K >= n + k + 1
例:
原编码:1011
    (1).根据2^K >= n + k + 1公式,n=4,则校验位k最小位数为3。2^0 = 1,2^1 = 2,2^2 = 4
    (2).将数据加入表格,如表所示
        

    (3).列出校验位公式,如下
        信息位拆分:
        7位=2^2 + 2^1 + 2^0;6位=2^2 + 2^1;5位=2^2 + 2^0;3位=2^1 + 2^0
        I4 =1 ;                        I3 =0 ;              I2 =1 ;              I1 =1
        校验位拆分:
        4位=2^2;2位=2^1;1位=2^0
        校验码:
        R2(4位) = I4⊕I3⊕I2 = 1⊕0⊕1 = 0
        R1(2位) = I4⊕I3⊕I1 = 1⊕0⊕1 = 0
        R0(1位) = I4⊕I2⊕I1 = 1⊕1⊕1 = 1
    (4).发送的的新编码为1010101
例:
接收的新编码为1011101,而发送的校验码为R2=0;R1=0;R0=1
    接收的数据加入表格,如表所示
   
    接收R2⊕I4⊕I3⊕I2 = 接收R2⊕发送R2 = 1 ⊕ 0 = 1
    接收R1⊕I4⊕I3⊕I1 = 接收R1⊕发送R1 = 0 ⊕ 0 = 0
    接收R0⊕I4⊕I2⊕I1 = 接收R0⊕发送R0 = 1 ⊕ 1 = 0
    结果为100,即2^2 = 4位,即第4位错误,所以当前第4位的1,应变为0

posted @ 2022-05-19 20:10  孤行旅者  阅读(189)  评论(0编辑  收藏  举报