数据校验码


什么是数据校验码

      计算机系统中的数据在读写、存储和传送的过程中可能会产生错误,这个时候就需要带有发现某些错误和自动改错能力的数据编码方法。实现原理就是加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码,这样就可以通过检测编码的合法性来达到发现错误的目的。

先来了解几个概念:

  • 码距:任意两个合法码之间最少有几个二进制不同,仅有一位不同,其码距为1;

例如有如下合法码:
      000 、 001 、010 、100 …
合法码之间最少有1位不同,码距为1;

      0110 、 1010、0011、0101 …
合法码之间最少有2位不同,所以码距为2;

       合理地增大码距,能提高发现错误的能力;但码所使用的二进制位数变多,增加了数据存储的容量或数据传送数量,所以通常要考虑在不多增加硬件的情况,尽可能发现或改正更多的错误。
在这里插入图片描述

常用的数据校验码有 奇偶校验码、海明校验码 和 循环冗余校验码:

01 奇偶校验码

奇偶校验码:为一个数据字节补充一个二进制位,称为校验位,使字节的8位和该校验位含有1值的个数为奇数或偶数。

在这里插入图片描述

在这里插入图片描述
异或运算:相同为0,相异为1;

如果有偶数个二进制位出错,偶校验的结果还是偶数,无法检测出错误;

奇偶校验实现电路:
在这里插入图片描述

在这里插入图片描述


02 海明校验码

实现原理:在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。

海明校验码是在偶校验的基础上实现的:
在这里插入图片描述

  • 海明码不仅可以校验错误,还可以纠错

在这里插入图片描述
海明码由 n 位信息位 和 k 位校验位构成,其中:

  • k位校验位能够表达 2的k方 种状态
  • (要能够涵盖一位数据没有出错的正确位,有可能出错的n位信息位、k位校验位 );
  • 即要满足 2的k次方 >= n + k + 1

在这里插入图片描述

  • 校验位P的位置: 1、2、4、8、16…(和二进制的权值一样)

在这里插入图片描述

  1. 确定需要多少位海明码;
  2. 确定校验位的分布(把信息位的位置二进制列出来寻找);
  3. 求校验位的值(偶检验)
  4. 纠错 得到出错位

在这里插入图片描述

以上是从右往左的顺序,接下来看 从左往右的顺序:(求解也是一致的)

在这里插入图片描述

海明校验码 拥有 2位检错能力 和 1位纠错能力

在这里插入图片描述

  • 海明码 还拥有一位全校验位,全体偶校验位失败如果有一位错纠正即可,如果有多位错,就需要重新传输;

在这里插入图片描述

在这里插入图片描述


03 循环冗余校验码CRC

          二进制信息位流沿一条线逐位在部件之间或计算机之间传送称为串行传送;CRC(cyclic redundancy check)循环冗余校验码 是指 k 位信息码之后拼接 r 位校验码;CRC码可以发现并纠正信息存储或传送过程中连续出现的多位错误,在磁介质存储和计算机之间通信方面得到广泛应用。

在这里插入图片描述

  • 即传送的数据码 约定一个 除数 ,添加校验位后 除法余数为0(其余也称模2除);
  • 若余数非0,说明出错,则进行重传或纠错;

示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苗半里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值