循环冗余校验(CRC)码

与海明校验码类似,CRC码也是数据通讯中常用的校验方式。
CRC 算法的基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到原数据后面。

结构

与海明校验码数据位和校验位穿插不同,CRC码中,校验位(R位)在信息位(K位)后面

计算校验位

以一个题目为例:设待校验的数据为。D8~D1 = 10101011,若采用CRC,且生成多项式为 10011,则其 CRC 码为:
这里首先要注意题目中的一个表述——“多项式”,该题目中写作“10011”,在有的题目中往往写作“x^4+x+1”
首先,在数据位后加多项式最高幂次个0,比如这里的多项式最高次项为x^4,那就在数据位后加四个0,变成:101010110000,作为被除数
然后,将多项式 10011 作为除数进行断除。需要注意的是,图中所框的部分,对应位只做xor运算,也就是做减法但不影响其他位

image

最后得到的余数:1010,即是校验位。那么整个CRC码为:10101011 1010

接收端校验

以上一节例题为例,假设收到的CRC码变成了10001011 1010,第10位(右边为低位)发生了错误。
现在尝试用CRC码与多项式 10011 进行短除:


image

得到余数为 1010(2) = 18+12 = 10(10) ,即第10位发生错误,只需要反转第10位的值,便可获得正确的值

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 奇偶校验、海明码、CRC循环冗余校验码 三种校验码比较重要,需要牢记,在计算机网络中用处较大 奇偶校验 根据被传输...
    正经龙阅读 9,532评论 0 1
  • 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式。在嵌入式软件开发中,经常要用到CRC 算法对各种数...
    Otis4631阅读 1,801评论 0 3
  • 电力系统是一个综合化的系统,作为一个熟练的电工,对于通信有着一定的认识。否则很多问题,我们将无从下手。首先我们从广...
    洪城小电工阅读 118,737评论 8 34
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,548评论 0 6
  • 今天是什么日子 叫我起床的不是闹钟是梦想 今日三只青蛙/番茄钟 成功日志-记录三五件有收获的事务 财务检视 人际的...
    面朝大海_219d阅读 158评论 2 1