漢明碼簡要介紹,**自
海明碼(也叫漢明碼)具有一位糾錯能力。本文以1010110這個二進位制數為例解釋海明碼的編碼和校驗方法。
設資料有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中需要一種取值方式表示資料正確,剩下2x-1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n+x位,因此x應該滿足
2x-1 ≥ n+x
使不等式成立的x的最小值就是校驗碼的位數。在本例中,n=7,解得x=4。
校驗碼在二進位制串中的位置為2的整數冪。剩下的位置為資料。如圖所示。
位置
1
2
3
4
5
6
7
8
9
10
11
內容
x1
x2
1
x3
0
1
1
x4
1
1
0
共有7+4 = 11位。
以求x2的值為例。為了直觀,將**中的位置用二進位制表示。
位置
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
內容
x1
x2
1
x3
0
1
0
x4
1
1
0
為了求出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
1
1
1
0
1
0
0
1
1
0
因此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。
關於海明碼
1.確定冗餘位長度 設原始資料為n,冗餘位為k 則n k 1 2 k 1001011 共7位,則8 k 2 k k 4 冗餘位為4位 2.將原始資料新增校驗位組成碼字 校驗位的設定 2 0 2 1 2 2 2 3 1 2345 6789 1011 校驗校驗1校驗 001校驗 011 3.確定每個校驗...
計網筆記 海明碼(漢明碼)
海明碼是可以發現雙位元錯誤,並可以糾正單位元錯誤的編碼方案。一般來講,檢錯編碼不一定具有糾錯能力,但是糾錯編碼具有檢錯能力 其工作流程可以分為以下四個步驟 1 確定校驗碼位數r 2 確定校驗碼和資料的位置 3 求出校驗碼的值 4 檢錯並糾錯。在以下的工作流程中,我們要傳送的資料d 101101.我們...
海明碼(漢明碼)的工作機制
一 海明碼的形成方式 1 首先海明碼是由資訊位和校驗位組成的 2 資訊位校驗位的關係 校驗位的位數r 資訊位的位數i 2 r 1 i r 3 校驗位的位置是2的整數次方 如 1 2 4 8 4 海明碼位數分組 因為海明碼其實是分組的奇偶校驗碼,所以有個分組的概念 1 1 3 5 7 2 2 3 6 ...