編碼
p1 ~ p4是漢明校驗碼逛万,d1 ~ d8為要傳輸?shù)臄?shù)據(jù)
根據(jù)圖表 p1對應(yīng)(0001)b,p2對應(yīng)(0010)b批钠,p3對應(yīng)(0100)b宇植,p4對應(yīng)(1000)b
將d1 ~ d8根據(jù)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的個數(shù)為偶數(shù)個
假設(shè)數(shù)據(jù)為0000_1111
根據(jù)分組指郁,可以得出:p1 = 0, p2 = 0, p3 = 1, p4 = 0
則編碼后的數(shù)據(jù)為:0001_0000_1111
校驗
例1
如果收到的數(shù)據(jù)為「0001_0000_1111」
按照與編碼相同的分組方式對c1 ~ c4分組,并將接收到的數(shù)據(jù)根據(jù)分組進行奇偶校驗
對c1組的1 3 5 7 9 11位置奇偶校驗拷呆,結(jié)果為0
對c2組的2 3 6 7 10 11位置奇偶校驗闲坎,結(jié)果為0
對c3組的4 5 6 7 12位置奇偶校驗,結(jié)果為0
對c4組的8 9 10 11 12位置奇偶校驗茬斧,結(jié)果為0
四個校驗位結(jié)果都為0腰懂,說明數(shù)據(jù)傳輸沒有發(fā)生錯誤
例2
如果收到的數(shù)據(jù)為「0001_0000_1101」(將第11位翻轉(zhuǎn))
c1組奇偶校驗結(jié)果為1
c2組奇偶校驗結(jié)果為1
c3組奇偶校驗結(jié)果為0
c4組奇偶校驗結(jié)果為1
{c4, c3, c2, c1} = 1011,對應(yīng)第11位啥供,在傳輸?shù)倪^程中悯恍,第11位發(fā)生錯誤
例3
如果收到的數(shù)據(jù)為「0001_0000_1001」(將第10、11位翻轉(zhuǎn))
c1組奇偶校驗結(jié)果為1
c2組奇偶校驗結(jié)果為0
c3組奇偶校驗結(jié)果為0
c4組奇偶校驗結(jié)果為0
{c4, c3, c2, c1} = 0001伙狐,漢明碼顯示的位置與實際位置不符合涮毫,無法定位到具體位置
那如果想檢測到2 bit error應(yīng)該如何處理
2 bit error檢測
為編碼后的數(shù)據(jù)額外增加一個奇偶校驗位
還是上面的例子為例瞬欧,增加一奇偶校驗位
加上奇偶校驗位后的編碼為 0_0010_0001_1111
例4
如果收到的數(shù)據(jù)是「0_0010_0001_0011」(將第10、11位翻轉(zhuǎn))
c1組奇偶校驗結(jié)果為1
c2組奇偶校驗結(jié)果為0
c3組奇偶校驗結(jié)果為0
c4組奇偶校驗結(jié)果為0
整體校驗結(jié)果為0
整體校驗通過罢防,但漢明校驗為通過艘虎,有2 bit error
例5
如果收到的數(shù)據(jù)是「0_0010_0001_0011」(將第11位翻轉(zhuǎn))
1組奇偶校驗結(jié)果為1
c2組奇偶校驗結(jié)果為1
c3組奇偶校驗結(jié)果為0
c4組奇偶校驗結(jié)果為1
整體校驗結(jié)果為1
整體未通過,漢明檢驗也未通過咒吐,有 1 bit error
例6
如果收到的數(shù)據(jù)是「0_0010_0001_1111」
c1組奇偶校驗結(jié)果為0
c2組奇偶校驗結(jié)果為0
c3組奇偶校驗結(jié)果為0
c4組奇偶校驗結(jié)果為0
整體校驗結(jié)果為0
整體通過野建,漢明檢驗也通過, 沒有error
總結(jié)
整體奇偶校驗未通過恬叹,漢明校驗未通過候生,有1 bit error并可糾正
整體奇偶校驗通過,漢明校驗未通過绽昼,有2 bit error且不可糾正
整體奇偶校驗通過唯鸭,漢明校驗通過,沒有error