#頭條創作挑戰賽#
編碼
p1 ~ p4是漢明校驗碼,d1 ~ d8為要傳輸的資料
根據圖表 p1對應(0001)b,p2對應(0010)b,p3對應(0100)b,p4對應(1000)b
将d1 ~ d8根據p1 ~ p4,分成4組
p1組有:(位置号)1 3 5 7 9 11(bit0 都是1)
p2組有:2 3 6 7 10 11(bit1 都是1)
p3組有: 4 5 6 7 12
p4組有:8 9 10 11 12
「以偶校驗為例」,p1 p2 p3 p4要保證每組中1的個數為偶數個
假設資料為0000_1111
根據分組,可以得出:p1 = 0, p2 = 0, p3 = 1, p4 = 0
則編碼後的資料為:0001_0000_1111
校驗
例1
如果收到的資料為「0001_0000_1111」
按照與編碼相同的分組方式對c1 ~ c4分組,并将接收到的資料根據分組進行奇偶校驗
對c1組的1 3 5 7 9 11位置奇偶校驗,結果為0
對c2組的2 3 6 7 10 11位置奇偶校驗,結果為0
對c3組的4 5 6 7 12位置奇偶校驗,結果為0
對c4組的8 9 10 11 12位置奇偶校驗,結果為0
四個校驗位結果都為0,說明資料傳輸沒有發生錯誤
例2
如果收到的資料為「0001_0000_1101」(将第11位翻轉)
c1組奇偶校驗結果為1
c2組奇偶校驗結果為1
c3組奇偶校驗結果為0
c4組奇偶校驗結果為1
{c4, c3, c2, c1} = 1011,對應第11位,在傳輸的過程中,第11位發生錯誤
例3
如果收到的資料為「0001_0000_1001」(将第10、11位翻轉)
c1組奇偶校驗結果為1
c2組奇偶校驗結果為0
c3組奇偶校驗結果為0
c4組奇偶校驗結果為0
{c4, c3, c2, c1} = 0001,漢明碼顯示的位置與實際位置不符合,無法定位到具體位置
那如果想檢測到2 bit error應該如何處理
2 bit error檢測
為編碼後的資料額外增加一個奇偶校驗位
還是上面的例子為例,增加一奇偶校驗位
加上奇偶校驗位後的編碼為0_0010_0001_1111
例4
如果收到的資料是「0_0010_0001_0011」(将第10、11位翻轉)
c1組奇偶校驗結果為1
c2組奇偶校驗結果為0
c3組奇偶校驗結果為0
c4組奇偶校驗結果為0
整體校驗結果為0
整體校驗通過,但漢明校驗為通過,有2 bit error
例5
如果收到的資料是「0_0010_0001_0011」(将第11位翻轉)
1組奇偶校驗結果為1
c2組奇偶校驗結果為1
c3組奇偶校驗結果為0
c4組奇偶校驗結果為1
整體校驗結果為1
整體未通過,漢明檢驗也未通過,有 1 bit error
例6
如果收到的資料是「0_0010_0001_1111」
c1組奇偶校驗結果為0
c2組奇偶校驗結果為0
c3組奇偶校驗結果為0
c4組奇偶校驗結果為0
整體校驗結果為0
整體通過,漢明檢驗也通過, 沒有error
總結
- 整體奇偶校驗未通過,漢明校驗未通過,有1 bit error并可糾正
- 整體奇偶校驗通過,漢明校驗未通過,有2 bit error且不可糾正
- 整體奇偶校驗通過,漢明校驗通過,沒有error