计算机组成原理校验码)
校验码 具有发现错误或者同时能给出错误所在位置的数据编码,就称为数据校验码。 纠错的关键是确定错误位置,然后取反即可。 将数据分组,每一组数据后附加一个校验位,使得该组数据(包括校验位)中1的个数为偶数(偶校验)或奇数(奇校验)。 三种方式: 垂直奇偶校验 水平奇偶校验 水平垂直奇偶校验 只有在所有列都发送完毕后,错误才能够完全检测出来,而且接收方可能不知道哪个列是不正确,只有重发所有列,对于单个错误,会给通信设备增加很大负担 奇偶校验码 垂直奇偶校验 编码规则 对一组字符各对应位(垂直方向)加校验位构成校验单元 位\数字 0 1 2 3 4 5 6 7 8 9 C1 0 1 0 1 0 1 0 1 0 1 C2 0 0 1 1 0 0 1 1 0 0 C3 0 0 0 0 1 1 1 1 0 0 C4 0 0 0 0 0 0 0 0 1 1 C5 1 1 1 1 1 1 1 1 1 1 C6 1 1 1 1 1 1 1 1 1 1 C7 0 0 0 0 0 0 0 0 0 0 偶 C0 0 0 1 0 1 0 0 1 1 0 奇 1 1 0 1 0 1 1 0 0 1 水平奇偶校验 编码规则 以一组字符中对应位(水平方向)作为校验单元进行奇偶校验 位\数字 0 1 2 3 4 5 6 7 8 9 偶校验 C1 0 1 0 1 0 1 0 1 0 1 1 C2 0 0 1 1 0 0 1 1 0 0 0 C3 0 0 0 0 1 1 1 1 0 0 0 C4 0 0 0 0 0 0 0 0 1 1 0 C5 1 1 1 1 1 1 1 1 1 1 0 C6 1 1 1 1 1 1 1 1 1 1 0 C7 0 0 0 0 0 0 0 0 0 0 0 水平垂直奇偶校验 编码规则 将前面两种校验方式相结合而成 位\数字 0 1 2 3 4 5 6 7 8 9 偶校验 C1 0 1 0 1 0 1 0 1 0 1 1 C2 0 0 1 1 0 0 1 1 0 0 0 C3 0 0 0 0 1 1 1 1 0 0 0 C4 0 0 0 0 0 0 0 0 1 1 0 C5 1 1 1 1 1 1 1 1 1 0 1 C6 1 1 1 1 1 1 1 1 0 1 1 C7 0 0 0 0 0 0 0 0 0 0 0 偶校验 0 1 1 0 1 0 0 1 0 1 1 海明码 海明码的组成: 由数据位及校验位组合而成的 ,数据位和校验位交叉排列。 实现原理:在数据中加入校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。 海明码计算步骤 根据信息位的位数n确定校验码的位数k 确定校验码的位置 求出校验位的值 k与n的关系 * * 信息位位数n 校验位位数k 1~4 3 5~11 4 12~26 5 27~57 6 58~119 7 2k>=n+k+1 确定校验码的位置 在海明码中,位号数为2的权的那些位作为校验位,记作P1,P2,P3,…,Pk,余下各位则为有效信息位,或者说,校验位穿插的原则是,第i位校验位占据第2i-1的位置。 位号 海明码位 参加检验的校验位 1 2 3 4 5 6 7 P1 P2 I1 P3 I2 I3 I4 P1 P2 P1、P2 P3 P1、P3 P2、P3 P1、P2、P3 校验位的确定 第i位由校验位位号之和等于i的那些校验位进行校验。 校验位Pi的计算公式 校验位Pi的取值等于它所参与检验的各位信息位的异或值。 P3位编码应满足I4、 I3 、I2 、P3为偶校验,即:P3= I4 ⊕ I3 ⊕ I2 P2位编码应满足I4、 I3 、I1 、P2为偶校验,即:P2= I4 ⊕ I3 ⊕ I1 P1位编码应满足I4、 I2 、I1 、P2为偶校验,即:P1= I4 ⊕ I2 ⊕ I1 校验方法 求3个检验和: S3=I4 ⊕ I3 ⊕ I2 ⊕ P3 S2=I4 ⊕ I3 ⊕ I1 ⊕ P2 S1=I4 ⊕ I2 ⊕ I1 ⊕ P1 若(S3 S2 S1)2= 0,则说明传送无错,即接收的代码是正确的;若(S3 S2 S1)2 ≠ 0,则说明传送有错,且(S3 S2 S1)2的十进制数值就是出错的位置。 海明码举例 例:0100 解题步骤如下: n=4,k取3即可 I4=0,I3=1,I2=0,I1=0 各个位的排列规则如下: 7 6 5 4 3 2 1 I4 I3 I2 P3 I1 P2 P1 按如下公式计算校验位的值: P3= I4 ⊕ I3 ⊕ I2 P2= I4 ⊕ I3 ⊕ I1 P1= I4 ⊕ I2 ⊕ I1 得 P3 =1 P2 =1 P1 =0 则最终传输的信息为:0101010 海明码举例 假如实际接收到的信息为:0100010 按如下