首页 > 编程知识 正文

crc校验码模二除法详解,模2除法(CRC校验码计算)

时间:2023-05-04 22:12:27 阅读:157755 作者:3667

类型2在谈除法之前,让我们先看一下按位异或运算。 也就是说,二进制数1101b异或1010b的结果为0111b。

通过相位差或一种二进制运算,只影响现在的位置,所以可以得到两个简单的法则。 交换律和结合律。

a (BC )=a (c ) ) (b (c ) ) ) ) ) ) ) ) ) ) ) ) b ) ) ) ) ) ) b ) c ) ) ) ) ) b ) 652

例如,1 <0> 1和1 <1> 0和0 <1> 1的结果是相同的。

以上规律对以后查表引导非常有用。

模子的除法不是传统意义上的除法。 二进制除法。 二进制除法操作为bit to bit。 也可以看作是不借用位数的二进制数的加法和减法,但实际上是逐位的异或。

二除法的除数称为polynomial,即多项式。 例如,多项式X5 X3 X1 1表示二进制101011b。

一般来说,被除数比除数大,但在实际使用中被除数可能比除数小。 此时得到的馀数总是被除数本身。 我该怎么处理这个呢?

2除法必须是除数,即多项式的最高位为1,否则没有意义。 二进制除法的规则是,如果被除数的当前最高有效位为1,则除以除数后商为1。否则,商也为0。 但是,实际上除法是异或,所以对商品来说意义不大,我想要的是太多。

模除法检验是指,在发送方发送的二进制数据之后填入n个0,除以长度为N 1的二进制数(最高位为1 )的馀数为检验值,天真的音调与填充长度一致。 将0替换为检查值,并与数据一起发送。 接收方在接收到数据后,不进行任何填充,直接除以相同的二进制,如果结果为零,则发送的数据没有错误。

如下所示,发送数据为0xcf(11001111b )、多项式为0x12 ) 10010b )时,结果如下所示。

实际追加了校验码的发送二进制数据110011111010b被接收后多项式除,校验码为0,发送数据没有错误。

试着换一个长一点的多项式。

传输数据为0xcf(11001111b )、多项式为0x11021 ) 100010000001b )时,结果如下所示。

我们再发送多字节的数据。

以传输数据为0xcf16(110011100010110b )、多项式为0x11021 ) 100010000001001b )为例,结果如下所示。

从上面的几个例子可以看出,模式2除法的校验码比多项式少取一个最高位的余数。 发送时,在发送数据的后面添加余数,同时发送数据和校验码。 接收方用同一多项式除,如果馀数为0,则表示数据传输没有错误。

以下是模式2除法的计算方法,实现语言为C# :

上篇【CRC】CRC导出(一) CRC简介下一篇【CRC】CRC导出)三)字节校验表和半字节校验表

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。