史上最通俗的海明碼編碼計算、檢錯和糾錯原理解析


下面是筆者一節視頻課程中的PPT內容,仔細而又很通俗地解說了海明碼的編碼計算、檢測錯和糾錯原理,假設由於PPT比較簡潔看不明確,可結合我的視頻來看,本節課程的視頻鏈接例如以下(可免費觀看,我所有課程5折搶購中!):http://edu.51cto.com/lesson/id-21540.html
一、海明碼檢錯/糾錯基本思想
 
海明碼(Hamming Code)是一個能夠有多個校驗位。具有檢測並糾正一位錯誤代碼的糾錯碼,所以也僅用於信道特性比較好的環境中。如以太局域網。它的檢錯、糾錯基本思想例如以下:

(1)將有效信息按某種規律分成若干組,每組安排一個校驗位通過異或運算進行校驗。得出詳細的校驗碼

(2)在接收端相同通過異或運算看各組校驗結果是否正確,並觀察出錯的校校組。或者多個出錯的校驗組的共同校驗位。得出詳細的出錯比特位

(3)對錯誤位取反來將其糾正
 二、海明碼計算
  海明碼計算要按下面步驟來進行:計算校驗碼位數→確定校驗碼位置→確定校驗碼

   1. 計算校驗碼位數

    假設用N表示加入了校驗碼位后整個傳輸信息的二進制位數。用K代表當中有效信息位數,r表示加入的校驗碼位數,它們之間的關系應滿足:N=K+r≤2r-1(是為了確保r位校驗碼能校驗所有的數據位,由於r位校驗碼所能表示的最大十進制數為2r-1,同一時候也確保各位碼本身不被其它校驗碼校驗)

息碼位數

1

2~4

5~11

12~26

27~57

58~120

121~247

校驗碼位數

2

3

4

5

6

7

8

   2. 確定校驗碼位置

海明碼的校驗碼的位置必須是在2n次方位置(n從0 開始,分別代表從左邊數起各自是第1、2、4、8、16……)。信息碼也就是在非2n次方位置

   3. 確定校驗碼

  • 校驗位置選擇原則:第i位校驗碼從當前校驗碼位開始,每次連續校驗i位后再跳過i位。然后再連續校驗i位。再跳過i位。以此類推。

    確定每一個校驗碼所校驗的比特位:

P1校驗碼位校驗的碼字位為:第1位(也就是P1本身)、第3位、第5位、第7位、第9位、第11位、第13位、第15位,……。
  • P2校驗碼位校驗的碼字位為:第2位(也就是P2本身)、第3位。第6位、第7位,第10位、第11位,第14位、第15位,……。

  • P3校驗碼位校驗的碼字位為:第4位(也就是P4本身)、第5位、第6位、第7位,第12位、第13位、第14位、第15位,第20位、第21位、第22位、第23位,……。

  • Pn校驗碼位校驗的碼字位為:第2n-1位(也就是Pn本身)、第2n-1+1位、第2n-1+2位、第2n-1+3位、……、第2n-1位。第3×2n-1位、第3×2n-1+1、……、第2×2n-1位。第5×2n-1位、第5×2n-1+1位、第3×2n-1位,……、第7×2n-1位、第7×2n-1+1位、……、第4×2n-1位,……,第(2m-1) 2n-1位、……第m×2n-1位

    最后每組通過異或邏輯運算(與偶校驗原理一樣)。使每組的運算結果為0,就可以得出第i位校驗碼的值

    4. 實現校驗和糾錯

把以上這些校驗碼所校驗的位分成相應的組,則在接收端的對各校驗位再進行邏輯“異或運算”,假設採用的是偶校驗,正常情況下均為0。

    假設終於發現僅僅是一個校驗組中的校驗結果不符。則直接能夠知道是相應校驗組中的校驗碼在傳輸過程中出現了差錯。由於所有校驗碼所在的位是僅僅由相應的校驗碼進行校驗;
假設發現多組校驗結果不對,則查看這些組中公共校驗的數據位(僅僅有數據位才可能被幾個校驗碼進行校驗),以終於確定是哪個數據位出了差錯(海明碼僅僅能檢查一位出錯);
最后,對所找到的出錯數據位取反就可以實現糾錯。


三、海明碼計算演示樣例

原信息碼:10011101

(1)確定校驗碼位數

原始信息碼一共8。依據前面的表可得知校驗碼位數為4

(2)確定校驗碼位置

??10011101

(2)計算機各位校驗碼

Pn校驗碼位校驗的碼字位為:第2n-1位(也就是Pn本身)、第2n-1+1位、第2n-1+2位、第2n-1+3位、……、第2n-1位,第3×2n-1位、第3×2n-1+1、……、第2×2n-1位。第5×2n-1位、第5×2n-1+1位、第3×2n-1位。……、第7×2n-1位、第7×2n-1+1位、……、第4×2n-1位,……,第(2m-1) 2n-1位、……第m×2n-1位
P1(n=1):1、3、5、7、9、11   #----檢驗的bit位,下同

             1    1    0    1   1    0     #----相應位的值,下同

P2(n=2):2、3、6、7、10、11

             1    1     0    0   1     1

P3(n=3):4、5、6、7、12

              0   0    0    1    1  

P4(n=4):8、9、10、11、12

              1    1    1     0      1

終於得出插入校驗碼后的信息碼為:111000111101



我的視頻課程所有 5折秒殺中。7月1號晚24點前有效!】

我的視頻課程主頁
http://edu.51cto.com/pack/view/id-3.html 


購終身會員。享所有課程 加入本人微信公眾帳號“ 王達大講堂 了解詳情


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM