1. 程式人生 > 其它 >海明校驗碼

海明校驗碼

原理:
    實際上就是在一個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).列出校驗位公式,如下
        資訊位拆分:
        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
    (3).將資料加入表格,如表所示