海明碼計算及其糾錯原理詳解
⊕ ,
圓圈中間乙個加號。運算法則總結兩句話就是:異為1,同為0。換言之,1
⊕1=0,1
⊕0=1。現在請大家閉上眼睛想一想,這種運算將在海明碼糾錯的過程中起到乙個什麼作用呢?我給大家舉個例子,你就明白了!s=a1
⊕a2.........an-1
⊕an=0,假設其中ak=0,那麼當ak由0變為1時,s會怎樣變化呢?這裡很容易證明,s將由0跳變為1。可能這裡有朋友會關心如果數列中有兩位資料發生變化呢?其實兩位的話可以剛好抵消,但是這裡我們是無需關心的,因為這裡我們只討論海明碼糾正一位錯的情況!說到這,想必大家對異或運算都了解了吧!那我們就開始吧!海明碼解說開始!假設要傳輸的資料是a4a3a2a1,資料位長度為4位,設校驗位長度為m,那麼應該滿足2m-1>=m+4。解出,m=3。這個不等式要解釋嗎?好吧,我給大家解釋下,校驗位為m位,那麼,校驗碼可以表示的最大十進位制數字為2m-1,去掉一位的原因是全0表示傳輸的資料沒有錯誤!校驗碼表示能夠糾正的二進位制數字位數,為了保證能夠糾正資料位最高位。那麼2m-1至少應該大於等於資料位和校驗位長度的總和!好了,設校驗碼為r3r2r1。根據海明碼規定,校驗位應放在資料位的2i-1的位置,整理好後設為m7m6m5m4m3m2m1。
好了,最後的問題,怎麼計算校驗碼呢?它怎麼糾錯呢?這裡我們設海明碼的監督關係式為s3s2s1。請大家仔細想一想,s1是不是代表三位二進位制校驗碼的最低位,讓我們看看有多少位數字參與了s1的運算,很容易看出m1、m3、m5、m7,所以s1=m1
⊕m3⊕m5
⊕m7(為什麼是這樣呢?這裡也給大家說明一下。我們看m的下標,它代表什麼呢?明白嗎?它代表的是數字在傳輸資料的第幾位。7=4+2+1,5=4+1,3=2+1,1=1。可見,這幾位數字均參與了第一位的運算,這樣,s1=1就能代表資料位的第一位出錯了!),同理,s2=m2
⊕m3⊕m6
⊕m7,s3=m4
⊕m5⊕m6
⊕m7。我們再來看這三個監督關係式
上面我們說到,要想資料位沒有錯誤,s3s2s1=000,通過這可以計算出r3r2r1,因為s1=0,根據異或運算,將m3
⊕m5⊕m7看作乙個整體,m1=m3
⊕m5⊕m7,r1=m1。同理可以計算出r2r1。那麼糾錯到底是怎麼實現的呢?請大家睜大眼睛仔細看上面三個監督表示式。正常情況下,s3s2s1均為0,我們假設m3出現了錯誤,發生了跳變,那麼s2s1將變成什麼呢?如果你不知道的話請往回去看看我說的關於異或運算的知識。由上面的監督關係式發現m3參與了s2s1的運算,所以在m3發生跳變的情況下s2s1也將發生跳變,由0變為1,但由於s3未參與m3的運算,其值不變,仍為0。所以監督關係式s3s2s1=011=3,所以在傳輸資料的第三位出現了錯誤。同理,可發現m6參與了s3s2的運算,當運算出錯時,監督關係式為110=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 ...
海明碼編碼原理及其解釋
一.糾正一位錯的海明碼的位數k 的選取必須符合下式 當資訊位為8 位時,海明碼校驗碼共有 4位,而當資訊位為 20位時,其校驗碼需要 5位。這是理論上進行糾錯需要用到的最少位。解釋 k位的糾錯碼能指明的位置最多為個,即從0.0 到1.1 除去0.0 表示第0 位出錯 沒有錯誤 再減去糾錯碼本身占用 ...
史上最通俗的海明碼編碼計算 檢錯和糾錯原理解析
一 海明碼檢錯 糾錯基本思想 海明碼 hamming code 是乙個可以有多個校驗位,具有檢測並糾正一位錯誤 的糾錯碼,所以也僅用於通道特性比較好的環境中,如以太區域網。它的檢錯 糾錯基本思想如下 1 將有效資訊按某種規律分成若干組,每組安排乙個校驗位通過異或運算進行校驗,得出具體的校驗碼 2 在...