如何简单的计算且通俗的理解CRC码(循环冗余校验码)含过程推演详细步骤
Posted xiaohajiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何简单的计算且通俗的理解CRC码(循环冗余校验码)含过程推演详细步骤相关的知识,希望对你有一定的参考价值。
如何简单的计算且通俗的理解CRC码(循环冗余校验码)
CRC码的出现的契机
CRC(Cyclic Redundancy Check)码即循环冗余校验码 ,在计算机运行及数据传输时,由于种种原因会导致数据存储或接收时出现差错。为了发现并纠正信息在存储或传送过程中连续的多位错误代码,因此CRC校验码被广泛应用。
什么是模2运算
模2运算的特点是不考虑进位和借位的运算
- 模2加、模2减 :这两者的运算结果是相等的,即0±1=1,0±0=0,1±-=1,1±1=0;(即两个位的异或结果)
- 模2乘:模2和求部分积之和;
- 模2除 :可类比于平常的除法,只是不需要考虑借位;
怎么简单的求CRC码
1.若已知生成多项式G(x)=1011、有效信息(或被传输的信息)D共有n位,需写出它的多项式M(x)并找到多项式中最高次幂的值k;
那么问题来了,如何写出D的多项式呢?假设D有4位,D的值(D3D2D1D0)为1010。则M(x)=1x3+0x2+1x1+0x0。(可以看到xi的系数为Di的取值,xi的次幂与该位的Di的权值相关)
显然,D的多项式M(x)的最高次幂的值为3,即k=3;
2.由1式中计算所得的k值可知,在计算模2除法之前(CRC码的编码主要由模2除法运算求得)需将有效信息D扩展(左移)至n+k位。
续1式中的例子,则D左移k=3位成为1010+000,即D=1010000.
3.进行模2除法:
注意上商原则:当余数首位为1时,上商1.否则上商0
4.将所得的k位余数添加至有效信息D后,即D+k位余数。则该例的CRC码为:1010011
以上是关于如何简单的计算且通俗的理解CRC码(循环冗余校验码)含过程推演详细步骤的主要内容,如果未能解决你的问题,请参考以下文章