目录

一、奇偶校验

奇偶校验的规律及原理:

二、汉明校验码

(1)校验位位置:

(2)汉明码的位号实质上是参与校验的各校验位位号之和。

(3)计算校验位的值。

(4)校验(设置指错字​)


一、奇偶校验

了解汉明码校验之前需要知道奇偶校验。

奇偶校验码是一种最简单的数据校验码,码距等于2。它可以检测出一位错误(或奇数位错误),但是不能确定出错的位置,也不能检测出偶数位错误

简单来说就是:能够检奇数位错,但不能纠错

校验的基本原理是在原有信息位的基础之上增加校验位。而奇偶校验只需要增加一位校验位

有效信息位(K位) 校验位(1位)

奇偶校验的规律及原理:

原理:使得校验码中“1”的个数表现出奇偶特征。

规律:1.奇校验———整个校验码(信息位+校验位)中“1”的个数为奇数。

           2.偶校验———整个校验码(信息位+校验位)中“1”的个数为偶数。

实例:

有效信息位(8位) 奇校验码(9位) 偶校验码(9位)
00000000 100000000 000000000
01010100 001010100 101010100
11111111 111111111 011111111

二、汉明校验码

原理:在有效信息位中加入几个校验码形成汉明码,使码距比较均匀地拉大,并把汉明码的每一个二进制位分配到几个奇偶校验组中。

校验位位数K,信息位位数N,满足2^{k}\geq N+K+1


(1)校验位位置:

校验位和信息位之和为m,每个校验位 P_{i} 被分到位号为 2^{i-1}的位置上。然后其余位置再依次放信息位(D)。

举例:信息位(D)为7位,所以根据公式得出校验位(P)为4位。

      P_{1}——第1位;  P_{2}——第2位;  P_{3}——第4位;  P_{4}——第8位;

位号 11 10 9 8 7 6 5 4 3 2 1
分布 D_{7} D_{6} D_{5} P_{4} D_{4} D_{3} D_{2} P_{3} D_{1} P_{2} P_{1}

(2)汉明码的位号实质上是参与校验的各校验位位号之和

汉明码每一位D_{i}由多位校验位校验,被校验的每一位位号等于校验它的校验位位号之和。目的是为了校验的结果能够在正确反映出错位的位号。

举例:(信息位位号=校验位位号之和)

D_{1}   的位号为3,3=1+2,所以参与校验的校验位是位号1和2对应的P_{1}P_{2} 。

D_{7}  的位号为11,11=1+2+8,所以参与校验的校验位是位号1、2、8对应的P_{1}P_{2}P_{4}

位号 11 10 9 8 7 6 5 4 3 2 1
分布 D_{7} D_{6} D_{5} P_{4} D_{4} D_{3} D_{2} P_{3} D_{1} P_{2} P_{1}
1+2+8 2+8 1+8 1+2+4 2+4 1+4 1+2

(3)计算校验位的值。

由(2)可知,根据偶校验计算P_{1}P_{2}P_{3}P_{4}的值。(知道这样做即可,第二步就是告诉为什么是这些信息位进行异或运算)

异或运算x\bigoplus y 若x、y相同则为0,不则为1。

P_{1}=D_{1}\bigoplus D_{2}\bigoplus D_{4}\bigoplus D_{5}\bigoplus D_{7}

P_{2}=D_{1}\bigoplus D_{3}\bigoplus D_{4}\bigoplus D_{6}\bigoplus D_{7}

P_{3}=D_{2}\bigoplus D_{3}\bigoplus D_{4}

P_{4}=D_{5}\bigoplus D_{6}\bigoplus D_{7}

(4)校验(设置指错字S_{1}S_{2}S_{3}S_{4}

按如下规则进行偶校验。PS:请不要纠结为什么,因为就是这样规定的,可以仔细想想。

S_{1}=P_{1}\bigoplus D_{1}\bigoplus D_{2}\bigoplus D_{4}\bigoplus D_{5}\bigoplus D_{7}

S_{2}=P_{2}\bigoplus D_{1}\bigoplus D_{3}\bigoplus D_{4}\bigoplus D_{6}\bigoplus D_{7}

S_{3}=P_{3}\bigoplus D_{2}\bigoplus D_{3}\bigoplus D_{4}

S_{4}=P_{4}\bigoplus D_{5}\bigoplus D_{6}\bigoplus D_{7}

S_{1}S_{2}S_{3}S_{4}均为0,表示无错。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐