当前位置:首页 期刊杂志

汉明码校验位取值的教学分析

时间:2024-05-04

王全福

(中山大学南方学院,广州 510970)

0 引言

汉明码是由Richard Hanming 于1950 年提出的,它具有一位纠错能力[1]。数据存储过程中由于各种原因可能存在差错。根据具体情况而选定合适的差错控制编码可以发现并纠正这些错误[2]。通常将原始数据配置成汉明编码来及时发现与纠正错误。在教学课程中发现众多的教科书对于应用比较普遍的校验技术——汉明码校验技术的原理解释的不够详尽,致使许多初学者对此感到迷惑[3]。因此,提出一种改进的检测位取值方法,对教学分析具有十分重要的意义。

1 组成汉明码的三要素

1.1 增添检测位

为使海明码具有纠错能力,能准确对错误定位或验证数据正确,新增添的检测位数k 应满足:

其中n为待检测二进制代码的位数,k为需增添检测位的位数。由此关系可知不同代码长度n与所需检测位数k的对应关系。

1.2 检测位的位置

当k的数值确定后,将n+k位代码从左至右依次编号为1,2,3,…,n+k。令,其中表示待插入的k位检测位,并将其分别插入至编号位置上。

表1 代码长度与检测位数的关系

1.3 检测位的取值

这些检测位主要负责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。

1.4 示例应用

若传递的数据信息为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。

2 校验位取值的改进方法

针对传统校验位取值时,各检测位小组的位号分配难以识记的缺点,提出一种改进办法,在教学中可以起到比较好的效果。还是按照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。与传统方法所得结果一致。特别是当传递的数据信息量较长时,使用此方法教学时,学生更容易配置汉明码。

3 结语

在计算机数据存储过程中,由于不同原因会产生差错。文中通过对汉明码校验位取值的教学分析,有助于强化学生理解和掌握此知识点。同时,在实际的教学实践过程中收到良好的反馈效果。随着数据校验技术的不断发展,必将使得数据更加安全可靠。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!