|
|
|
海明码是奇偶校验的另一种扩充。和上面提到的奇偶校验的不同之处在于海明码采用多位校验码的方式,在这些多个校验位中的每一位都对不同的信息数据位进行奇偶校验,通过合理地安排每个校验位对原始数据进行的校验的位组合,可以达到发现错误、纠正错误的目的。
|
|
|
|
假设数据位有m位,如何设定校验位(冗余位)k的长度才能满足纠正一位错误的要求呢?这里做一个简单的推导。
|
|
|
|
k位的校验码可以有2k个值。显然,其中一个值表示数据是正确的,而剩下的2k-1个值意味着数据中存在错误,如果能够满足:2k-1>m+k(m+k为编码后的数编总长度),则在理论上k个校验码就可以判断是哪一位(包括信息码和校验码)出现了问题。
|
|
|
|
|
|
校验方程是指示每个校验位对相应的信息位进行校验的等式。
|
|
|
|
确定了k的值后,如何确定每k位中的每一位对哪些数据进行校验呢?这是一个问题。上面的推导只是说能够做的,那么如何达到纠错的目的呢?但是幸好考试中都会列出海明校验方程。例如:
|
|
|
|
|
|
|
|
在一般情况下,校验码会被插入到数据的1,2,4,8,…,2n位置,那么,在数据生成时,按照提供的海明校验方程计算出b1,b2,b4,…,bn各位,在数据校验时,按照海明检验方程进行计算,如果所有的方程式计算都为0,则表示数据是正确的。如果出现1位错误,则至少有一个方程不为0。海明码的特殊之处在于,只要将①②③三个方程左边计算数据按③②①排列,得到的二进制数值就是该数据中出错的位,例如第6位出错,则③②①为110为二进制数6。
|
|
|
|
当出现两位错误时,这种海明码能够查错,但无法纠错。
|
|
|
|
采用恒比码的编码体系中,所有有效的编码中为1的位都相同,所以被称为恒比。邮电部门的电传、电报及条形码就广泛地使用恒比码。这种编码生成时是查表,接收检验时是检查每个编码中1出现的次数是否正确。
|
|
|