計網筆記 海明碼(漢明碼)

2021-10-07 19:04:50 字數 1606 閱讀 8149

海明碼是可以發現雙位元錯誤,並可以糾正單位元錯誤的編碼方案。(一般來講,檢錯編碼不一定具有糾錯能力,但是糾錯編碼具有檢錯能力)。

其工作流程可以分為以下四個步驟:

(1)確定校驗碼位數r;

(2)確定校驗碼和資料的位置;

(3)求出校驗碼的值;

(4)檢錯並糾錯。

在以下的工作流程中,我們要傳送的資料d=101101.

我們使用海明不等式來確定校驗碼的位數r,海明不等式的形式如下:

2^r>=k+r+1

其中:k為資料的位數(資訊位數);

可以滿足不等式的最小r為校驗碼的位數(冗餘資訊位數)

在確定校驗碼p和資料d的位置的時候,我們的資料位按照1,2,3,…的順序排布,按照下列原則:

(1)p1,p2,…,pn:放在2的n(n>=0)次方的位置上;

(2)d1,d2,…,dm:在校驗碼已經排放好的基礎上,將d按序把剩下的空填滿。

注意:p的值暫放不填,將d的值按位填進去。

資料位12

3456

78910

**p1

p2d1

p3d2

d3d4

p4d5

d6實際值10

1101

首先,在步驟的**基礎上,加上資料位對應的二進位制,更改後的**如下:

二進位制0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

資料位123

4567

8910**

p1p2

d1p3

d2d3

d4p4

d5d6

實際值101

101接著按照如下的步驟操作:

(1)先找到p所對應的的二進位制中1所在的位置

(2)再去看d中哪些數的對應位上的值也是1

(3)找到滿足條件的d,再將p和這些d的實際值依次進行異或,令結果為等於0

(4)即可求出p(實際值)

將p的值填入表中,得:

二進位制0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

資料位123

4567

8910**

p1p2

d1p3

d2d3

d4p4

d5d6

實際值001

0011

101由此,我們可以得到101101的海明碼為 0010011101.

在接收端,我們採用如下步驟進行判斷所接收的資料串是否發生錯誤:

(1)按照前個步驟的做法。將p和對應的d(帶入實際接收到值)進行異或

(2)將得到的結果按照倒序的方式進行排列

(3)排列好的結果,即資料出錯位數的二進位制值

(4)在找到出錯位後,我們將其實際接收的值改為其相反的數即可。(1->0,0->1)

對應的位數的二進位制表示為0101,即5.

所以第五位出錯,我們將第五位的1改為0即可。

海明碼(漢明碼)的工作機制

一 海明碼的形成方式 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 ...

漢明碼或者海明碼的計算或者糾錯

設k為有效資訊的位數,r為校驗位的位數,則整個碼字的位數n應滿足不等式 n k r 2r 1 是2的r次方 若要求海明碼能檢測出2位錯誤,則再增加1位校驗位。例如 二進位制編碼位10101100,共8位所以k 8,可以得出校驗位r的位數為4位。位號 1 n 是那些權值為2的那些位,即2 0 2 1 ...

漢明碼(海明碼)你了解多少?帶你探秘背後秘密

如何編碼?如何校驗?在計算機儲存中,可能受其它原因,導致儲存出現錯誤,0變成1,1變成0,存放資料以漢明碼的方式儲存,可以進行資料的校正,具有一位糾錯能力。在介紹漢明碼之前舉乙個例子說明一下分組校驗 比如有乙個位元組的資料 1000 0101 黃色為檢驗位 資料說明 1 1010 0001 該資料1...