關於海明碼的筆記

2022-08-31 01:36:11 字數 2719 閱讀 8377

漢明碼簡要介紹,**自

海明碼(也叫漢明碼)具有一位糾錯能力。本文以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 ...