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

2022-09-23 22:06:31 字數 2090 閱讀 5598

合法**集:所謂合法**集就是當**由於未知因素導致出錯後,計算機可是識別到錯誤的**。不合法**集:。如果(101)出錯,可能是(111),那麼無法判斷是錯誤**還是本來就是(111),因此不合法。下面給出合法**集:,當有一位發生變化時並不會和**集中的其他**發生衝突,因此合法。

l: 編碼的最小距離

d: 檢錯的位數

c:糾錯的位數

漢明碼:具有一位糾錯能力的編碼方案,實質上是使用特殊分組方式的奇偶校驗。

奇偶校驗:假定需要傳輸的資料是「00100011」,那麼在原資料加上乙個校驗位,使得「1」的個數是偶數個:「100100011」。當傳輸到另一端的時候,檢查「1」的個數是否是偶數個,如果還是偶數,那麼表示沒有錯誤,否則就是失效的資料。

帶分組的奇偶校驗:為了更加精確的定位出錯的二進位制位,那麼可是將二進位制位分組,將「00100011」分成「0010」和「0011」,分別在兩個分組前加上乙個校驗位:「10010」和「00011」,這就構成了「1001000011」,傳送到對方的時候,將每個分組的「1」查詢一遍,然後考察是否是偶數個,即可更加精確的定位到是哪個分組出錯。

漢明碼的編碼:上邊說的都是基於劃分的分組方式,漢明碼是基於非劃分的分組方式。假定存在如下資料位:

我們將這個長度的**分成3組,每組包含1個校驗位,總共包含4個資料位,如下圖所示:

將3個組分別命名為group1、group2、group3,那麼將會產生三個校驗位結果:

group3

group2

group1

result

0 0

0 沒有錯誤

0 0

1 group1中有錯誤,1的位置出錯.

1 0

1 group1和group3公共區域出錯,5位置出錯.

...

...

...

...

既然有了校驗位,那麼這些校驗位應該放到**呢?我們上面將資料按位劃分了組:

group1: ;

group2: ;

group3: .

實際上,我們的分組方式就是按照漢明碼的編碼規則劃分的,因此要考察每個分組的特徵:

group1: ;

group2: ;

group3: .

顯然,應該放到2n-1位。

如果是二進位制**的話產生的校驗值會有如下特徵:

group1:***x1

group2:***1x

group3:xx1xx

group4:x1***

...從右向左,如果group1的第一位是1,表示group1獨有的位元位出錯。如果是group1的第一位和group4的第四位同時是1,表示group1和group4共有且其他組沒有的位元位出錯。

綜上所述,漢明碼總共有三個要素:

l漢明碼的組成需要新增多少位校驗位

因為每個組都有乙個校驗位,所以多少個校驗位就是多少個組,設校驗位包含k位,原始資料位元位有n位,在加上一種沒有錯誤的情況,因此是2k>= n+k+1(和畫圖一樣的道理)。

l校驗位在整個編碼中的位置

2n-1

l校驗位的取值

根據採用的是奇校驗還是偶校驗有關。

漢明碼使用交替跳躍的方式選擇每個組中應該包含的位元位,比如:

group1:選取1位,跳躍1位;

group2:選取2位,跳躍2位...

漢明碼的校驗:

group1 = 1⊕3⊕5⊕7

group2 = 2⊕3⊕6⊕7

...測試題:求「0101」按照偶校驗配置的漢明碼

原始資料長度n = 4; 分組個數:k = 3; 漢明碼排序:

位元位序號

1 2

3 4

5 6

7 漢明碼

c1 c2

0 c4

1 0

1 下面是每個分組的情況:

c1分組情況:

1 3

5 7

c1 0

1 1

c1分組已經有偶數個「1」,因此c1= 0;同理,c2= 1; c4= 0。

因此,漢明碼為:「0100101」

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

一 海明碼檢錯 糾錯基本思想 海明碼 hamming code 是乙個可以有多個校驗位,具有檢測並糾正一位錯誤 的糾錯碼,所以也僅用於通道特性比較好的環境中,如以太區域網。它的檢錯 糾錯基本思想如下 1 將有效資訊按某種規律分成若干組,每組安排乙個校驗位通過異或運算進行校驗,得出具體的校驗碼 2 在...

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

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

海明碼的編碼和檢驗

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