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

2021-06-22 13:45:53 字數 2205 閱讀 4642

):

一、海明碼檢錯/糾錯基本思想

海明碼(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

校驗碼位數23

4567

82. 確定校驗碼位置

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

3. 確定校驗碼

p1校驗碼位校驗的碼字位為:第1位(也就是p1本身)、第3位、第5位、第7位、第9位、第11位、第13位、第15位,……。

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

4. 實現校驗和糾錯

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

如果最終發現只是乙個校驗組中的校驗結果不符,則直接可以知道是對應校驗組中的校驗碼在傳輸過程中出現了差錯,因為所有校驗碼所在的位是只由對應的校驗碼進行校驗;

如果發現多組校驗結果不正確,則檢視這些組中公共校驗的資料位(只有資料位才可能被幾個校驗碼進行校驗),以最終確定是哪個資料位出了差錯(海明碼只能檢查一位出錯);

最後,對所找到的出錯資料位取反即可實現糾錯。

三、海明碼計算示例

原資訊碼

:10011101

(1)確定校驗碼位數

原始資訊碼一共8,根據前面的錶可得知校驗碼位數為4

(2)確定校驗碼位置

??1?001?1101

(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、111 

1     0    0   1     1

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

00    0    1    1  

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

11    1     0      1

最終得出插入校驗碼後的資訊碼為:111

0001

11101

5折秒殺中

,7月1號晚24點前有效!】

:購終身會員,享所有課程

王達大講堂

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

所謂合法 集就是當 由於未知因素導致出錯後,計算機可是識別到錯誤的 不合法 集 如果 101 出錯,可能是 111 那麼無法判斷是錯誤 還是本來就是 111 因此不合法。下面給出合法 集 當有一位發生變化時並不會和 集中的其他 發生衝突,因此合法。l 編碼的最小距離 d 檢錯的位數 c 糾錯的位數 ...

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

合法 集 所謂合法 集就是當 由於未知因素導致出錯後,計算機可是識別到錯誤的 不合法 集 如果 101 出錯,可能是 111 那麼無法判斷是錯誤 還是本來就是 111 因此不合法。下面給出合法 集 當有一位發生變化時並不會和 集中的其他 發生衝突,因此合法。l 編碼的最小距離 d 檢錯的位數 c 糾...

海明碼的編碼和檢驗

我們在寄快遞時,會填寫乙個單子,在填寫完成之後自己要進行一下核對,再然後是快遞員也要進行核對,這就屬於一種校驗,這種方式時比較簡單的。而計算機系統在執行時,各個部件之間要進行資料交換,為了保證資料在傳輸過程中的汙物,通常使用校驗碼的方法來檢測傳送的資料是否出錯,常用的的方法奇偶叫研發 海明碼和迴圈冗...