关于一道求 CRC循环冗余码的题解

在这里插入图片描述
2017年12月29日,星期五,
简单再捋一遍CRC编码的概念和计算公式,原理明白了,以后不管碰到什么样的题,都会迎刃而解了。

首先,需要知道如下几个概念,

CRC编码,就是你题目中所说的“待发字串”,它是经加工后带有CRC校验的待发送信息,

CRC校验码,就是你题目中所说的“CRC循环冗余码”,以下都简称为CRC校验码,它是通过CRC规则计算得来,

多项式,即真实信息,就是未经CRC编码规则处理的原始的信息,就是你题目中说的“已知信息码”,原始的真实信息有两种表现形式,以本题为例,

a、原始信息的 二进制字串(形式):1000100101,

b、原始信息的 多项式(形式):X9+X5+X^2+1,

X9+X5+X^2+1多项式,就是由原始信息的二进制形式1000100101得来的,多项式中每一个因数都对应二进制形式 1000100101 中值为1的那一位,X^9 X^5 X2就是29+25+22,那表示二进制数的权位,

1 0 0 0 1 0 0 1 0 1

12^9 02^8 02^7 02^6 12^5 02^4 02^3 12^2 02^1 12^0

20=1…29=1 000 000 000,凡是二进制字串中值为1的权位都出现在了多项式中,例如,二进制字串最高位(左1)的1,就是29,所以它出现在了多项式中,形状为X9,而二进制数串中值为0的权位都没有出现在多项式中,可以数一下,二进制数串中有4个1,所以对应的多项式中有4个因子:X9、X5、X2、1,其中多项式的最后一个因子1,其实就是X0,而我们都知道,任何数的0次幂都是1(0除外),可以看出,这两种形式是等价的,即1000100101=X9+X5+X2+1,当我们再遇到多项式时,就是去数原始信息(1000100101)中的1,然后把它的值为1的权位放到一起,写成式子(X9+X5+X2+1),两者意义是一样的,从二进制形式能推导出多项式,也可以从多项式推导出二进制形式,

生成多项式,就是你题目中提到的“G(x)=X5+X4+X^2+1”,生成多项式 也可以写成二进制形式,X5+X4+X^2+1其对应的二进制形式:110101,

通常,我们为了方便说明问题将生成多项式叫做:G(x),这里请注意,需要将

“生成多项式”和“多项式”进行区分,G(x)中的G就是generator polynomial,生成多项式的意思,

多项式:指的是原始信息 1000100101中所有权位为1的权位写在一起的形式X9+X5+X^2+1

生成多项式:是人为指定的多项式,由编码人指定的东西,本例被人为指定成X5+X4+X^2+1即 110101 ,这个生成多项式是人为指定的,不是固定的,个人理解你指定成X5+X3+X2+1也行,制定成X5+X4+X3+X^2+1也行,

好了,接下来,我们要说最关键的CRC的定义和计算过程了,

CRC的定义:

多项式*2^(G(x)的最高次幂指数,你给的图片题目中G(x)的最高次幂指数是5)/G(x)=CRC校验码;

用文字表达,就是原始数据信息乘以,2的 【生成多项式中最高幂指数】 次幂,乘2的多少次幂,就是在右边加几个0,比如乘以2^2,就是在右边加2个零,因为是二进制数,所以乘几个2就是加几个零,和十进制数乘几个10就是加几个零道理一样,然后再去除以生成多项式,请注意,这里的除,不是数学中的除法,而是指计算机中的模二除运算,实际上就是逻辑异或运算,说白了,就是将除数和被除数高位,进行左对齐后,相同为0,不同为1,然后一直除下去,直到得到最后的余数为止,这个余数就是我们需要的CRC校验码,而且这个最后得到的余数,取几位由生成多项式中最高幂指数决定,最高幂指数是5就取5位,最高幂指数是6就取6位,最高幂指数是4就取4位,是根据生成多项式的最高次幂来定取几位的.本例中,最高次幂是5,所以,最后的余数是5位二进制数,

X5+X4+X^2+1写成二进制就是: 110101

你的图片题目中,G(x)=X5+X4+X^2+1,也就是生成多项式是110101,

结合本题,我们来做一遍,原始数据:1000100101,生成多项式:110101,根据上面的规则有,

1000100101*2^5=1000100101 00000

把原始值右边加上5个零:1000100101 00000之后,去除以生成多项式:110101

1000100101 00000

110101


0101110101 00000

左对齐,并开始按位异或,得 0101110101 00000,

进行第二次除运算:

101110101 00000

110101


011011101 00000

左对齐,再按位异或,得到 011011101 00000

开始第三次除运算:

11011101 00000

110101


00001001 00000

左对齐,再按位异或,得到 00001001 00000

进行第四次除运算:

100100000

110101


010001000

左对齐,再异或,得到 010001000

进行第五次除运算:

10001000

110101


01011100

左对齐,再异或,得到 01011100

进行第六次除运算:

1011100

110101


0110110

左对齐,再异或,得到 0110110

进行第七次,最后一次除运算:

110110

110101


000011

最终余数为000011,而由G(x)的最高次幂X^5的幂指数决定了,CRC校验码取5位,因此,最终得到的CRC校验码为:00011,

多项式*2^(G(x)的最高次幂指数,本例中G(x)的最高次幂指数是5)+G(x)=最终在物理线路上传送的CRC编码待发字串,

用文字表达就是,原始数据乘以,2的 【生成多项式中最高幂指数】 次幂,然后再加上生成多项式,最终得到要在线路中传送的CRC编码待发字串,

接着,以本例进行余下的计算,原始数据:1000100101,CRC校验码(CRC循环冗余码)为:00011,

根据上面的定义,有:

1000100101*2^5=1000100101 00000,

1000100101 00000

  •                  00011
    

100010010100011

所以最终的“待发字串”CRC编码为:100010010100011

August2024the31thSaturday

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值