海明碼(也叫漢明碼)具有一位糾錯能力。本文以1010110這個二進位制數為例解釋海明碼的編碼和校驗方法。
編碼確定校驗碼的位數x
設資料有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中需要一種取值方式表示資料正確,剩下2x-1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n+x位,因此x應該滿足
2x-1 ≥ n+x
使不等式成立的x的最小值就是校驗碼的位數。在本例中,n=7,解得x=4。
確定校驗碼的位置
校驗碼在二進位制串中的位置為2的整數冪。剩下的位置為資料。如圖所示。位置1
2345
6789
1011
內容x1x21
x3010
x4110
求出校驗位的值
以求x2的值為例。為了直觀,將**中的位置用二進位制表示。
位置0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
內容x1
x21x3
010x4
110
為了求出x2,要使所有位置的第二位是1的資料(即形如**1*的位置的資料)的異或值為0。即x2^1^1^0^1^0 = 0。因此x2 = 1。
同理可得x1 = 0, x3 = 1, x4 = 0。
位置0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011內容0
1110
1001
10
因此1010110的海明碼為01110100110。
校驗假設位置為1011的資料由0變成了1,校驗過程為:
將所有位置形如***1, **1*, *1**, 1***的資料分別異或。
***1: 0^1^0^0^1^1 = 1
**1*: 1^1^1^0^1^1 = 1
*1**: 1^0^1^0 = 0
1***: 0^1^1^1 = 1
以上四組中,如果一組異或值為1,說明該組中有資料出錯了。***1 **1* 1***的異或都為1,說明出錯資料的位置為1011。
海明碼的編碼和校驗方法
海明碼 也叫漢明碼 具有一位糾錯能力。本文以1010110這個二進位制數為例解釋海明碼的編碼和校驗方法。編碼確定校驗碼的位數x 設資料有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中需要一種取值方式表示資料正確,剩下2x 1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n x位,因此...
海明碼之編碼原理和校驗方法
海明碼,小名漢明碼 hamming code 以發明者理查德 衛斯里 漢明的名字命名。海明碼具有檢錯和糾錯雙功能,它基於奇偶校驗原理,只能檢查出某一位錯碼的位置。當有多位錯碼時,它就不適用了。在了解漢明碼之前,先熟悉下異或運算和奇偶校驗。異或運算 異或運算,相異為1,相同為0。它也叫模2和 模2加法...
貸款卡編碼的校驗方法
貸款卡編碼一共有16位,最後兩位是校驗位 整個貸款卡編碼的規則如下 前三位 分別為數字或者大寫英文本母 第四位到第十四位 分別為數字 後兩位的校驗碼為 前十四位乘以權重相加後除以97後的餘數再加1後得到的數字,如果此數字為個位數,前面還需要補乙個零 前十四位編碼對應的權重為1,3,5,7,11,2,...