Featured image of post 校验码

校验码

校验码

  • 位错误:0变1,1变0

image-20220329095552666

由若干位代码组成的一个字叫码字,

将两个码字逐位进行对比,具有不同的位的个数称为两个码字间的距离。

一种编码方案可能有若干个合法码字,各合法码字间的最小距离为码距d

当d=1,无检错能力;当d=2时,有检错能力;当d>=3时,若设计合理,可能具有检错,纠错能力。

奇偶校验码

  • 奇校验码:保证整个校验码“1”的个数为奇数
  • 偶校验码:保证整个校验码中“1”的个数为偶数

image-20220329100414756

异或运算

image-20220329101431871

海明码

​ 海明码设计思路:将信息位分组进行偶校验,即多个校验位。

多个校验位能携带多种状态信息,(对/错,错在哪)。

image-20220329102051451

image-20220329105441321

image-20220329110343308

循环冗余校验码(CRC码)

思想:数据发送、接收方约定一个“除数”(一般为一个生成多项式)

  1. K个信息位与R个校验位作为“被除数”,添加校验位后需保证除法的余数为0

    1. 确定K、R以及生成多项式对应的二进制码,其中K=信息码长度,R=生成多项式最高次幂

    2. 移位: 信息码左移R位,低位补0

    3. 相除:对移位后的信息码,用生成多项式进行模2除法,产生余数

      ps:模2除就是取被除数(除完一次之后就是对余数进行判断)最高位如果为1,则商1,对除数后三位与对应的被除数三位进行异或运算

  2. 收到数据后,进行除法检查余数是否为0

  3. 若余数非0说明出错。

  4. K个信息位,R个校验位,若生成多项式选择得当且2R>=K+R+1则CRC码可以纠正1位错。(实际上一般只用来检错)

总有些事情高于其他
Built with Hugo
主题 StackJimmy 设计
本站访客数人次 总访问量 本文阅读量