1. 程式人生 > >海明碼和監督關係式

海明碼和監督關係式

編碼原理和校驗方法

貼上目前為止看到的最簡單且基礎的講解,非常直觀易懂,並且條理非常清晰。非常感謝原作者了。

監督關係式

推倒過程

假設我們現在的有資訊位a6a5a4a3(k=4),由2r  ≥k+r+1得到r=3。即在4位資訊位a6a5a4a3後面加上3位冗餘位a2a1a0,構成7位碼字a6a5a4a3a2a1a0 。

a2,a1,a0分別由資訊位中的幾位異或得到

校驗時,他們就分別和這些位異或構成三個監督關係式

規定:

無錯時,這三個關係式的值S2,S1,S0全部為0,即000

若a0錯,則S0=1,S1=S2=0,即001

若a1錯,則S1=1,S0=S2=0,即010

若a2錯,則S2=1,S0=S1=0,即100

S2,S1,S0這三個校正因子的其他4中編碼用來區分資訊位的一位錯

對應關係如下

S2S1S0       000      001      010    100    011    101    110     111

錯碼位置      無         a0        a1      a2      a3      a4      a5       a6

由此可見,a2,a4,a5,a6的一位錯都會使得S2=1,因此S2=a2+a4+a5+a6

同理可得

S1 a1a3a5a6

S0 a0a3a4a6

S2 a2a4a5a6

糾錯過程

假設碼字0010101傳輸中發生一位錯,在接收端收到的為0011101(我們可以看到是a3出錯)

將接收端碼字代入監督關係式:

  S2 =a2+a4十a5十a6

  S1 =a1+a3十a5十a6

  S0 =a0+a3十a4十a6

可算得S2=0、 S1=1和S0 =1。

1、S2S1S0=011=3,故錯誤的是a3。

2、我們也可以更一般性的這樣去想:

S1=1,說明a1,a3,a5,a6中有一位錯

S0=1,說明a0,a3,a4,a6中有一位錯

所以,可以知道,錯誤一定出現在a3,a6中的一個

S2=0,說明a2,a4,a5,a6不會發生錯誤

所以排除了a6,即錯誤的是a3.