海明校驗碼

2021-08-10 10:00:38 字數 1439 閱讀 2919

這是關於計算機基礎的知識。我們都知道計算機系統執行時,各個部件之間要進行資料交換,為了確保資料在傳送的過程中正確無誤,一是提高硬體電路的可靠性,二是提高**的校驗能力,包括查錯和糾錯。此文主要是從海明碼的校驗能力來說,也是使用校驗碼的方法來檢測傳送的資料是否出錯。

它的實現原理,是在m個資料位之外加上k個校驗位,從而形成乙個m+k位的新的碼字,使新的碼字的碼距比較均勻地拉大。把資料的每乙個二進位制位分配在幾個不同的偶校驗位的組合中,當某一位出錯後,就會引起相關的幾個校驗位的值發生變化,這不但可以發現出錯,還能指出是哪一位出錯,為進一步自動糾錯提供了依據。

可能看這原理較難理解,請看下面的例子。

要計算海明校驗碼的值,很簡單,三步即可:

首先,要知道海明校驗碼是放在2的冪次位上的,即「1,2,4,8,16,32······」;

其次,對於資訊位為m的原始資料,需要加入k位的校驗碼,它滿足m+k+1<2k

; 這裡可以這樣理解,k個校驗位可以有pow(2,k) (代表2的k次方) 個編碼,其中有乙個代表是否出錯. 剩下2k 

-1個編碼狀態則用來表示到底是哪一位出錯. 因為n個資料位和k個校驗位都可能出錯,所以k滿足2

k -1 >= n+k

最後,即可計算出校驗碼。

例如:要計算原始資訊位為101101100的海明校驗碼。 1.

先用m+k+1<2k

計算出校驗位:9+k+1 <2k→k=4,即校驗位為4位。

2.把原始資訊位填入下表1:

填充校驗位

這是比較關鍵的一步,看看都有哪些位置用到了哪幾個校驗位,如下表2:

至此,咱們就可以知道每個校驗位都校驗了哪些位置,即:

bit1=3,5,7,9,11,13

bit2=3,6,7,10,11

bit4=5,6,7,12,13

bit8=9,10,11,12,13

最後,用位置上的原始資訊(表1)做異或運算(相同時為0,不同時為1)

就可以知道校驗位上的值了,即:

bit1=1

⊕0⊕1⊕0⊕1⊕0=1

bit2=1

⊕1⊕1⊕1⊕1=1

bit4=0

⊕1⊕1⊕0⊕0=0

bit8=0

⊕1⊕1⊕0⊕0=0

把校驗位填到表1為:

第一次看海明校驗的時候,不知道它是怎麼計算出校驗位上的值,之後和同伴討論了之後感覺自己明白了,但當另乙個同伴再問的時候,需要點時間才能拾起,所以這次進行了總結。學習真的需要反覆。

海明校驗碼

是由貝爾實驗室的richard hamming設計的,是一種利用奇偶性來檢錯和糾錯的檢驗方法。海明碼的構成方法是在資料位之間的特定位置上插入k個校驗位,通過擴大碼距來實現檢錯和糾錯。實現原理 是在m個資料位之外加上k個校驗位,從而形成乙個m k位的新的碼字,使新的碼字的碼距比較均勻地拉大。把資料的每...

海明校驗碼

計算機組成中的海明校驗碼,相信學過的都會有了解,那麼對其中校驗位的確定,我想似乎有些人不是很明白,今天我來詳細的把如何確定校驗位分享一下 首先看下基本的概念 2 r k r 1 其中r為校驗位 k為資訊位 資訊位是已知的,那麼如何確定校驗位呢,用乙個例子來說明 例如 二進位製碼1011 求它的海明編...

常用校驗碼(奇偶校驗碼 海明校驗碼 CRC校驗碼)

一 奇偶校驗碼 二 海明校驗碼 三 crc校驗碼 計算機系統執行時,各個部之間要進行資料交換.交換的過程中,會有發生誤碼的可能 即0變成1或1變成0 由於計算機的儲存是通過二進位制 來實現的的,誤碼會導致儲存的內容發生改變。為確保資料在傳送過程正確無誤,常使用檢驗碼.我們常使用的檢驗碼有三種.分別是...