今天讲校验码。有些问题讲前似乎很清楚,但讲的过程中发现思路还不是那么清楚。此处再回顾一下。
一、码字和码距问题。
由若干位代码组成的一个字叫做码字。
一种码制是若干种码字的组合。
将两个合法码字逐位比较,不同二进制数的位数成为两个码字间的距离。
一种码制中,各码字间的最小距离称为该码制的“码距”。
例如,8位补码,码字是8位二进制组成的字,不同码字最少1位不同,故码距为1。再如奇偶校验,9位的奇偶校验可以表示的合法码字共28个,另外28个为非法码字。一个合法码字要变到另外一个合法码字,至少要有两位同时变化,所以码距为2。
为了增加码制的码距,要加入校验位,校验位和数据位组成“码字”。 如海明码中的码字包括数据位和校验位。
二、交叉奇偶校验
交叉奇偶校验中,如果传输的数据1位发生了错误,则可以定位到错误。可以检测到两个位同时发生错误,无论它们位于同行、同列还是不同行列。但是不能保证发现4位同时出错,如四位构成长方形。
三、海明码
1、海明码的基本原理及计算方法
假定海明码为m位,其中信息码n位,校验码k位。k位校验位共2k个组合,1个用来表示传输信息无误,k个用来表示某个校验位出错,n个用来表示某个数据位出错。
若要求海明码能指出并纠正一位错,则数据位的位数n和校验位的位数k应满足如下关系(海明不等式):
2 k≥k+n+1 ,即 2 k≥m+1 , 2 k-1≥m(海明码位数不超过k个校验位的数据表示范围)