CRC校验码

CRC校验码是一种常用的数据通信查错校验码,通过模2除法计算生成。本文介绍了CRC的基本原理,包括如何选择生成多项式,以及通过示例说明了计算过程。在实际通信中,通过比对接收端的CRC校验码来判断数据在传输过程中是否出错。
摘要由CSDN通过智能技术生成

前言

之前学习在朋友的服务器练习socket通信, 使用过crc校验码, 但只是网上随意找的方法进行校验,此次进行详细探究

什么是CRC校验码

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性

原理

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设要发送的信息用多项式C(X)表示,将C(x)左移R位(可表示成C(x)*2R次方),这样C(x)的右边就会空出R位,这就是校验码的位置。用 C(x)*2R次方 除以生成多项式G(x)得到的余数就是校验码。

这里大家去了解下“模2除法”,就是按位异或,但是不会向上借位,有效位数小于除数位数则为余数
这里写图片描述

  • 首先我们先选择一个除数, 一个用于在接收端进行校验时,对接收的帧进行除法运算的除数多项式$
  • 看所选定的除数二进制位数(假设为k位),然后在要发送的数据帧(假设为m位)后面加上k-1位“0”,然后以这个加了k-1个“0“的新帧(一共是m+k-1位)以“模2除法”方式除以上面这个除数,所得到的余数(也是二进制的比特串&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值