今天讲校验码。有些问题讲前似乎很清楚,但讲的过程中发现思路还不是那么清楚。此处再回顾一下。
一、码字和码距问题。
由若干位代码组成的一个字叫做码字。
一种码制是若干种码字的组合。
将两个合法码字逐位比较,不同二进制数的位数成为两个码字间的距离。
一种码制中,各码字间的最小距离称为该码制的“码距”。
例如,8位补码,码字是8位二进制组成的字,不同码字最少1位不同,故码距为1。再如奇偶校验,9位的奇偶校验可以表示的合法码字共28 个,另外28 个为非法码字。一个合法码字要变到另外一个合法码字,至少要有两位同时变化,所以码距为2。
为了增加码制的码距,要加入校验位,校验位和数据位组成“码字”。 如海明码中的码字包括数据位和校验位。
二、交叉奇偶校验
交叉奇偶校验中,如果传输的数据1位发生了错误,则可以定位到错误。可以检测到两个位同时发生错误,无论它们位于同行、同列还是不同行列。但是不能保证发现4位同时出错,如四位构成长方形。
三、海明码
1、海明码的基本原理及计算方法
假定海明码为m位,其中信息码n位,校验码k位。k位校验位共2k 个组合,1个用来表示传输信息无误,k个用来表示某个校验位出错,n个用来表示某个数据位出错。
2 、校验
因为校验位的计算公式通过相关数据位的异或得到,当相关数据位出错时,会引起 Si (相关公式参考课件)变为 1 。因为数据位的海明码下标正好可分解为相关校验位的加权和,通过构成的值可判断出错的数据位。
海明码中,如果仅有一个 Si 为 1 ,除了相应校验位可能出错外,也可能同时三位海明码出错,例如 D1 、 D2 、 P3 错会使 S2 为 1 , D1 、 D5 、 P4 错也会使 S2 为 1 ,虽能检测到错误,但错误位置不确定。
推广海明码中,因为附加校验位的引入,码距变为 4 。当出现两个 Si 为 1 时,肯定是两位海明码出错,但无法定位错误。
四、 CRC 校验码
相对比较简单,注意出错时余数的循环。