tft每日頭條

 > 生活

 > 海明校驗碼計算示例

海明校驗碼計算示例

生活 更新时间:2025-01-26 21:54:40

二進制數據經過傳送、存取等環節,會發生誤碼(1變成0或0變成1),這就有如何發現及糾正誤碼的問題。所有解決此類問題的方法就是在原始數據(數碼位)基礎上增加幾位校驗位。我們常使用的檢驗碼有三種. 分别是奇偶校驗碼、海明校驗碼和循環冗餘校驗碼(CRC)。

海明校驗碼是由RichardHamming于1950年提出、目前還被廣泛采用的一種很有效的校驗方法。它的實現原理,是在k個數據位之外加上r個校驗位,從而形成一個k r位的新的碼字,使新的碼字的碼距比較均勻地拉大。把數據的每一個二進制位分配在幾個不同的偶校驗位的組合中,當某一位出錯後,就會引起相關的幾個校驗位的值發生變化,這不但可以發現出錯,還能指出是哪一位出錯,為進一步自動糾錯提供了依據。但是因為這種海明校驗的方法隻能檢測和糾正一位出錯的情況。所以如果有多個錯誤,就不能查出了。

什麼是碼距?

兩個碼組對應位上數字的不同位的個數稱為碼組的距離,簡稱碼距,又稱海明(Hamming)距離。例如00110和00100碼距為1,12345和13344碼距為2,Caus和Daun碼距為2。

海明校驗碼公式(假設為k個數據位設置r個校驗位)

公式怎麼得出來的呢?

假設有r個校驗位,一個位子有0或1兩種情況,r個位子就有2^r種排列情況,能表示2^r種狀态。其中一個狀态用來表示正确(沒有錯誤發生)的這種情況。其餘的2^r-1種狀态來表示錯誤發生在哪一位。總共有k r位,所以2^r-1一定要>=總位子k r。

按照該不等可以得出k與r的對應關系

海明校驗碼計算示例(簡單理解海明校驗碼)1

注意:海明校驗碼是放在2的幂次位上的,即“1,2,4,8,16,32······”

實戰求1011的海明碼

第一步:求r的值(即校驗位數)

直接根據公式代入得:

2^r-1 ≥ 4 r

2^r-r ≥ 5

得到r最小為3

所以海明碼的位數是4 3=7位

第二步:校驗位和信息位對号入座

注意: 信息位的位置分配是從高位到低位依次存放

注意: 海明校驗碼是放在2的幂次位上的

海明校驗碼計算示例(簡單理解海明校驗碼)2

第三步:确定校驗位的值

校驗原則:被校驗的海明位的下标等于所有參與校驗該為的校驗位的下标之和

海明校驗碼計算示例(簡單理解海明校驗碼)3

然後将校驗碼校驗的信息位的位置記錄下來:

  • r1: 3, 5, 7

  • r2: 3, 6, 7

  • r3: 5, 6, 7

然後做對應信息位的異或運算(異或的運算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1))

  • r1: 1 xor 1 xor 1 = 1

  • r2: 1 xor 0 xor 1 = 0

  • r3: 1 xor 0 xor 1 = 0

代入表格得到

海明校驗碼計算示例(簡單理解海明校驗碼)4

注意:按照從低位到高位的排列順序得到海明碼:1010101

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved