时间:2024-05-04
王全福
(中山大学南方学院,广州 510970)
汉明码是由Richard Hanming 于1950 年提出的,它具有一位纠错能力[1]。数据存储过程中由于各种原因可能存在差错。根据具体情况而选定合适的差错控制编码可以发现并纠正这些错误[2]。通常将原始数据配置成汉明编码来及时发现与纠正错误。在教学课程中发现众多的教科书对于应用比较普遍的校验技术——汉明码校验技术的原理解释的不够详尽,致使许多初学者对此感到迷惑[3]。因此,提出一种改进的检测位取值方法,对教学分析具有十分重要的意义。
为使海明码具有纠错能力,能准确对错误定位或验证数据正确,新增添的检测位数k 应满足:
其中n为待检测二进制代码的位数,k为需增添检测位的位数。由此关系可知不同代码长度n与所需检测位数k的对应关系。
当k的数值确定后,将n+k位代码从左至右依次编号为1,2,3,…,n+k。令,其中表示待插入的k位检测位,并将其分别插入至编号位置上。
表1 代码长度与检测位数的关系
这些检测位主要负责n+k位信息中不同数位所组成小组的奇偶检测任务。具体分配如下:
●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,…位
随后将各位的数值做异或运算,得出结果赋予对应的检测位C2i。
若传递的数据信息为1011。令:
首先通过公式:
确定检测位的个数。由于传递数据信息为1011,故检测二进制代码的位数n=4,由公式计算得k=3,即需增添3 个检测位。
当k的数值确定后,将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。
针对传统校验位取值时,各检测位小组的位号分配难以识记的缺点,提出一种改进办法,在教学中可以起到比较好的效果。还是按照1.4 小节中传递的数据信息位1011 为例。被检验位的位号等于校验它的各校验位的位号之和。[xy]表示被检测位或校验位的位号:
同理:
由此得知:
C1参与了数据b1、b3、b4的检测;记作:C1b1b3b4
C2参与了数据b1、b2、b4的检测;记作:C2b1b2b4
C4参与了数据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。与传统方法所得结果一致。特别是当传递的数据信息量较长时,使用此方法教学时,学生更容易配置汉明码。
在计算机数据存储过程中,由于不同原因会产生差错。文中通过对汉明码校验位取值的教学分析,有助于强化学生理解和掌握此知识点。同时,在实际的教学实践过程中收到良好的反馈效果。随着数据校验技术的不断发展,必将使得数据更加安全可靠。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!