纠错编码【海明码】
海明碼(Hamming Code)
基本概念
-
對于連續比特的檢驗有檢錯和糾錯兩種形式
檢錯編碼:
- 奇偶校驗碼
- CRC冗余碼
-
海明碼:
- 能夠檢查出錯位和糾正出錯位
- 其特點為,檢查偶數位,糾正奇數位
-
海明不等式:
2 ^ r - 1 >= k + r
- r:冗余信息位
- k:數據信息位
但是對于檢錯編碼不能找到出錯的位置,因此這里介紹一種糾錯編碼:海明碼
基本步驟
-
根據傳輸的數據和海明不等式得到需要的冗余位個數:
例如:
∵ data = 101101【6位即k = 6】
∴ 需要的最小冗余碼個數位2 ^ r - r >= 7 ==> r = 4
∴ 需要4位冗余位
-
將數據碼填入正確的位置并留出冗余碼的位置
冗余碼的位置均為2^i --> 1,2,4,8…
因此冗余碼對應的數據位均只有1位1,其余位均為0,且1的位置逐次升高
數據位置0001【1】0010【2】0011【3】0100【4】0101【5】0110【6】0111【7】1000【8】1001【9】1010【10】 信息(k)/冗余? r1 r2 k1 r3 k2 k3 k4 r4 k5 k6 數值 1 0 1 1 0 1 -
通過冗余碼的數據位置,填充數組
一個冗余碼控制多個相應位置
每個冗余碼控制信息位對應位置位1的數據位置【由于冗余碼的填充位置為2^i決定】:
例:
? r1 = 0001最低位為1,因此所有數據位置最低位為1的位置均受其控制【0011(k1),0101(k2),0111(k4),1001(k5)】
填充方法:
r1 ⊕ k1 ⊕ k2 ⊕ k4 ⊕ k5 = 0 ==> r1 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 = 0 ==> r1 = 0
數據位置0001【1】0010【2】0011【3】0100【4】0101【5】0110【6】0111【7】1000【8】1001【9】1010【10】 信息(k)/冗余? r1 r2 k1 r3 k2 k3 k4 r4 k5 k6 數值 0 0 1 0 0 1 1 1 0 1 -
對于接收方的校驗:
-
對于所有檢驗位均再次對應異或運算:
例:
【表格種第五為發生了錯誤】
重新查看校驗碼:
r1 ⊕ k1 ⊕ k2 ⊕ k4 ⊕ k5 = 1(P1)
r2 ⊕ k1 ⊕ k3 ⊕ k4 ⊕ k6 = 0(P2)
r3 ⊕ k2 ⊕ k3 ⊕ k4 = 1(P3)
r4 ⊕ k5 ⊕ k6 = 0(P4)
P4P3P2P1 = 0101 = 5即第5位發生錯誤
數據位置0001【1】0010【2】0011【3】0100【4】0101【5】0110【6】0111【7】1000【8】1001【9】1010【10】 信息(k)/冗余? r1 r2 k1 r3 k2 k3 k4 r4 k5 k6 數值 0 0 1 0 1 1 1 1 0 1
-
-
將錯誤位取反即糾錯結束
總結
- 上一篇: 高等数学(第七版)同济大学 习题2-3
- 下一篇: 关于java分包原则