首頁 現(xiàn)實

數(shù)學心

第六百八十六章 漢明碼(糾錯碼)

數(shù)學心 蔡澤禹 1575 2025-03-06 08:42:13

  信號在傳輸?shù)倪^程中會不可避免的發(fā)生錯誤,而糾錯碼就可以發(fā)現(xiàn)和改正這個錯誤。

  1948年,香農(nóng)在《通信的數(shù)學理論》中信道編碼定理指出:只要采用適當?shù)募m錯碼,就可以在多類信道撒謊能夠傳輸消息,誤碼率可以很小。

  1950年,漢明發(fā)現(xiàn)了可以糾正一個獨立錯誤的線性分組碼。

  格雷給粗一種可以糾正三個錯誤的完備碼。

  海明碼(Hamming Code)是一個可以有多個校驗位,具有檢測并糾正一位錯誤代碼的糾錯碼,所以它也僅用于信道特性比較好的環(huán)境中,如以太局域網(wǎng)中,因為如果信道特性不好的情況下,出現(xiàn)的錯誤通常不是一位。

  海明碼的檢錯、糾錯基本思想是將有效信息按某種規(guī)律分成若干組,每組安排一個校驗位進行奇偶性測試,然后產(chǎn)生多位檢測信息,并從中得出具體的出錯位置,最后通過對錯誤位取反(也是原來是1就變成0,原來是0就變成1)來將其糾正。

  要采用海明碼糾錯,需要按以下步驟來進行:1、計算校驗位數(shù);2、確定校驗碼位置;3、確定校驗碼;4、實現(xiàn)校驗和糾錯

  1.計算校驗位數(shù)

  要使用海明碼糾錯,首先就要確定發(fā)送的數(shù)據(jù)所需要要的校驗碼(也就是“海明碼”)位數(shù)(也稱“校驗碼長度”)。它是這樣的規(guī)定的:假設(shè)用N表示添加了校驗碼位后整個信息的二進制位數(shù),用K代表其中有效信息位數(shù),r表示添加的校驗碼位,它們之間的關(guān)系應滿足:N=K+r≤2r-1

  如K=5,則要求2r?r≥5+1=6,根據(jù)計算可以得知r的最小值為4,也就是要校驗5位信息碼,則要插入4位校驗碼。如果信息碼是8位,則要求2 r? r≥ 8 + 1 = 9,根據(jù)計算可以得知r的最小值也為4。

  信息碼位數(shù)與校驗碼位數(shù)之間的關(guān)系

  信息碼位數(shù)分別為1、2~4、5~11、12~26、27~57、58~120、121~247的時候,則校驗碼位數(shù)分別為2、3、4、5、6、7、8。

  2.確定校驗碼位置

  上一步我們確定了對應信息中要插入的校驗碼位數(shù),但這還不夠,因為這些校驗碼不是直接附加在信息碼的前面、后面或中間的,而是分開插入到不同的位置。但不用擔心,校驗碼的位置很容易確定的,那就是校驗碼必須是在2^n的位置,如第1、2、4、8、16、32,……位(對應20、21、22、23、24、25,……,是從最左邊的位數(shù)起的),這樣一來就知道了信息碼的分布位置,也就是非2^n位置,如第3、5、6、7、9、10、11、12、13,……位(是從最左邊的位數(shù)起的)。

  舉一個例子,假設(shè)現(xiàn)有一個8位信息碼,即b1、b2、b3、b4、b5、b6、b7、b8,它需要插入4位校驗碼,即p1、p2、p3、p4,也就是整個經(jīng)過編碼后的數(shù)據(jù)碼(稱之為“碼字”)共有12位。根據(jù)以上介紹的校驗碼位置分布規(guī)則可以得出,這12位編碼后的數(shù)據(jù)就是p1、p2、b1、p3、b2、b3、b4、p4、b5、b6、b7、b8。

  現(xiàn)假設(shè)原來的8位信息碼為10011101,因現(xiàn)在還沒有求出各位校驗碼值,現(xiàn)在這些校驗碼位都用“?”表示,最終的碼字為:??1?001?1101。

  3.確定校驗碼

  這些校驗碼的值不是隨意的,每個校驗位的值代表了代碼字中部分數(shù)據(jù)位的奇偶性(最終要根據(jù)是采用奇校驗,還是偶校驗來確定),其所在位置決定了要校驗的比特位序列??偟脑瓌t是:第i位校驗碼從當前位開始,每次連續(xù)校驗2^(n-1)位后再跳過i位,然后再連續(xù)校驗2^(n-1)位,再跳過2^(n-1)位,以此類推。最后根據(jù)所采用的是奇校驗,還是偶校驗即可得出第n位校驗碼的值。

  4.校驗與糾錯

  把以上這些校驗碼所校驗的位分成對應的組,則在接收端的對各校驗位再進行邏輯“異或運算”,如果采用的是偶校驗,正常情況下均為0。

  如果最終發(fā)現(xiàn)只是一個校驗組中的校驗結(jié)果不符,則直接可以知道是對應校驗組中的校驗碼在傳輸過程中出現(xiàn)了差錯,因為所有校驗碼所在的位是只由對應的校驗碼進行校驗;如果發(fā)現(xiàn)多組校驗結(jié)果不正確,則查看這些組中公共校驗的數(shù)據(jù)位(只有數(shù)據(jù)位才可能被幾個校驗碼進行校驗),以最終確定是哪個數(shù)據(jù)位出了差錯(海明碼只能檢查一位出錯);最后,對所找到的出錯數(shù)據(jù)位取反即可實現(xiàn)糾錯。

  如計算出的每組的校驗結(jié)果為p1、p2、p3、p4,均為0則正確,有一個不為0的則出錯的位置在p1+10?p2+100?p3+1000?p4的位置處。

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進入下一章  按 “空格鍵” 向下滾動
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南