王全福
(中山大學南方學院,廣州 510970)
漢明碼是由Richard Hanming 于1950 年提出的,它具有一位糾錯能力[1]。數(shù)據(jù)存儲過程中由于各種原因可能存在差錯。根據(jù)具體情況而選定合適的差錯控制編碼可以發(fā)現(xiàn)并糾正這些錯誤[2]。通常將原始數(shù)據(jù)配置成漢明編碼來及時發(fā)現(xiàn)與糾正錯誤。在教學課程中發(fā)現(xiàn)眾多的教科書對于應用比較普遍的校驗技術——漢明碼校驗技術的原理解釋的不夠詳盡,致使許多初學者對此感到迷惑[3]。因此,提出一種改進的檢測位取值方法,對教學分析具有十分重要的意義。
為使海明碼具有糾錯能力,能準確對錯誤定位或驗證數(shù)據(jù)正確,新增添的檢測位數(shù)k 應滿足:

其中n為待檢測二進制代碼的位數(shù),k為需增添檢測位的位數(shù)。由此關系可知不同代碼長度n與所需檢測位數(shù)k的對應關系。
當k的數(shù)值確定后,將n+k位代碼從左至右依次編號為1,2,3,…,n+k。令,其中表示待插入的k位檢測位,并將其分別插入至編號位置上。

表1 代碼長度與檢測位數(shù)的關系
這些檢測位主要負責n+k位信息中不同數(shù)位所組成小組的奇偶檢測任務。具體分配如下:
●C1負責檢測的小組包含1,3,5,7,9,11,…位
●C2負責檢測的小組包含2,3,6,7,10,11,14,15,…位
●C4負責檢測的小組包含4,5,6,7,12,13,14,15,…位
●C8負責檢測的小組包含8,9,10,11,12,13,14,15,24,…位
隨后將各位的數(shù)值做異或運算,得出結果賦予對應的檢測位C2i。
若傳遞的數(shù)據(jù)信息為1011。令:

首先通過公式:

確定檢測位的個數(shù)。由于傳遞數(shù)據(jù)信息為1011,故檢測二進制代碼的位數(shù)n=4,由公式計算得k=3,即需增添3 個檢測位。
當k的數(shù)值確定后,將7 位代碼從左至右依次編號為1,2,3,…,7。令,其中表示待插入的k位檢測位,并將其分別插入至2i位號上。相應的位置排列如下:

?
由檢測位取值分配關系知:
●C1負責檢測的小組包含1,3,5,7 位
●C2負責檢測的小組包含2,3,6,7 位
●C4負責檢測的小組包含4,5,6,7 位
按照配偶原則來配置漢明碼如下:
C1=b4⊕b3⊕b1=1⊕0⊕1=0
C2=b4⊕b2⊕b1=1⊕1⊕1=1
C4=b3⊕b2⊕b1=0⊕1⊕1=0
故按配偶原則配置出的漢明碼為0110011。
針對傳統(tǒng)校驗位取值時,各檢測位小組的位號分配難以識記的缺點,提出一種改進辦法,在教學中可以起到比較好的效果。還是按照1.4 小節(jié)中傳遞的數(shù)據(jù)信息位1011 為例。被檢驗位的位號等于校驗它的各校驗位的位號之和。[xy]表示被檢測位或校驗位的位號:

同理:

由此得知:
C1參與了數(shù)據(jù)b1、b3、b4的檢測;記作:C1b1b3b4
C2參與了數(shù)據(jù)b1、b2、b4的檢測;記作:C2b1b2b4
C4參與了數(shù)據(jù)b1、b2、b3的檢測;記作:C4b1b2b3
按照配偶原則來配置漢明碼如下:
C1=b1⊕b3⊕b4=1⊕0⊕1=0
C2=b1⊕b2⊕b4=1⊕1⊕1=1
C4=b1⊕b2⊕b3=1⊕1⊕0=0
故按配偶原則配置出的漢明碼為0110011。與傳統(tǒng)方法所得結果一致。特別是當傳遞的數(shù)據(jù)信息量較長時,使用此方法教學時,學生更容易配置漢明碼。
在計算機數(shù)據(jù)存儲過程中,由于不同原因會產(chǎn)生差錯。文中通過對漢明碼校驗位取值的教學分析,有助于強化學生理解和掌握此知識點。同時,在實際的教學實踐過程中收到良好的反饋效果。隨著數(shù)據(jù)校驗技術的不斷發(fā)展,必將使得數(shù)據(jù)更加安全可靠。