海明碼的理解計算


   

海明碼(Hamming Code)是一個可以有多個校驗位,具有檢測並糾正一位錯誤代碼的糾錯碼,所以它也僅用於信道特性比較好的環境中,如以太網中,因爲如果信道特性不好的情況下,出現的錯誤通常不是一位。

海明碼的檢錯、糾錯基本思想是將有效信息按某種規律分成若干組,每組安排一個校驗位進行奇偶性測試,然後產生多位檢測信息,並從中得出具體的出錯位置,最後通過對錯誤位取反(原來是1就變成0,原來是0就變成1)來將其糾正。

根據海明碼的糾錯原理,得出了:


                              m+k+1<=2K

    其中:m表示有效的信息位數;k表示用於糾錯的位數。滿足了上面的公式,才能進行糾錯。

    舉例說明,假設有一組信息碼爲:1101 0111 0,如何計算海明碼?

一、確定糾錯用的冗餘位數

    M=9,那麼,9+k+1<=2k,由此得出k=4,也就是說要在原始有效信息位填充4bit二進位。

二、冗餘填充位的計算

    4bit的冗餘位按照海明碼的原理要填充在2n位上,即1248……位上。由此得出如下的表格

wKioL1bqzsCgJJo5AACZfiv-BXA630.jpg

將信息位與冗餘位間的關係整理成一張表格如下。

wKioL1bqzzfSDwo7AADgt80wGBw195.jpg

由此得出:

1個冗餘位由35791113參與校驗

2個冗餘位由3671011參與校驗

4個冗餘位由5671213參與校驗

8個冗餘位由910111213參與校驗

如果全部按偶校驗計算得出如下圖結果:

wKioL1bqz46BHtTIAADHLZ7leCk954.jpg

可以這樣理解:

1bit位:B1B3B5B7B9B11B13=0⊕1⊕1⊕1⊕0⊕1⊕0=0

2bit位:B2B3B6B7B10B11 =0⊕1⊕0⊕1⊕1⊕1=0

4bit位:B4B5B6B7B12B13 =1⊕1⊕0⊕1⊕1⊕0=0

8bit位:B8B9B10B11B12B13 =1⊕0⊕1⊕1⊕1⊕0=0

我們稱上面的4個式子爲監督關係式。

也就是說,校驗與原有的信息做異或運算按偶校驗計算得出的結果全部是0

因此,這4bit的冗餘位是:0011

三、信息校驗

假設有一位數據出錯了,我們這裏假設是第10位在傳輸過程中由1變成了0,出錯了,這樣上面的4個監督關係式就會發生變化,變成如下:

1bit位:B1B3B5B7B9B11B13=0⊕1⊕1⊕1⊕0⊕1⊕0=0

2bit位:B2B3B6B7B10B11 =0⊕1⊕0⊕1⊕0⊕1=1

4bit位:B4B5B6B7B12B13 =1⊕1⊕0⊕1⊕1⊕0=0

8bit位:B8B9B10B11B12B13 =1⊕0⊕0⊕1⊕1⊕0=1

由此可以看出,14式沒有錯,而28出現了錯誤,由此B3B6B7B10B11B9B12B13可能是出錯位,但是從14位可以看出正確的位是:B3B5B7B9B11B13B6B12,從可能出錯的位中把正確的去掉,就剩下了B3B6B7B10B11B9B12B13(紅色字是去掉的位),這樣就僅剩下第10位了,這樣我們把10進行反轉就得到了正確的信息了。

更簡單的方法是由高位往低位寫(即由第8位寫到第一位)結果是1010,轉換爲10進制數爲10,就是第10位出錯了

有這樣一道題:

使用海明碼進行前向糾錯,如果冗餘爲4位,那麼信息位最多可以用到多少位?假定碼字位a6  a5  a4  a3  a2  a1  a0,並且有下面的監督關係式:

S2=a2+a4+a5+a6

S1=a1+a3+a5+a6

S0=a0+a3+a4+a6

若S2S1S0=110,則表示出錯位是哪一位?

答案:可以用到11位;a5位出錯

寫得不好,請指教!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章