CRC校验原理思考

前言

考研狗,读计组,读至CRC,惑之。
花了些查找资料和了解,先写个大概有时间再补齐。

基础知识

① 带余除法

f ( x ) = p ( x ) q ( x ) + r ( x ) ,    deg ⁡ ( r ) < deg ⁡ ( p ) f(x)=p(x)q(x)+r(x),~~ \deg(r)<\deg(p) f(x)=p(x)q(x)+r(x),  deg(r)<deg(p)

② Galois域
G F ( 2 ) : ( Z 2 ,   + ,   ⋅ ) GF(2):(\mathbb Z_2,~+,~\cdot) GF(2):(Z2, +, )

操作过程概述

回顾整个过程:
① 有一个需要传输的二进制串,记为 D D D,它所对应的多项式为 d ( x ) d(x) d(x)(在模2多项式环中),顺便记 deg ⁡ d ( x ) = n \deg d(x)=n degd(x)=n
② 有一个事先决定好的生成多项式 p ( x ) p(x) p(x),这个多项式对于发送方和接收方是已知的,记 deg ⁡ p ( x ) = m \deg p(x)=m degp(x)=m
③ 将二进制串 D D D左移 m m m位,得到新的二进制串 D ′ D' D,对应的多项式为 f ( x ) = d ( x ) ⋅ x m f(x)=d(x)\cdot x^m f(x)=d(x)xm
④ 对 f ( x ) f(x) f(x)关于模2除以生成多项式 p ( x ) p(x) p(x),得到余数 r ( x ) r(x) r(x),这里具体的商我们并不关心。
⑤ 把 r ( x ) r(x) r(x)对应的二进制串连接在串 D D D后面,得到 D 1 D_1 D1 D 1 : = D R ‾ D_1:=\overline{DR} D1:=DR.这个 D 1 D_1 D1正是信息 D D D对应的CRC码
⑥ 当接收端接收到二进制串 D ′ D' D时,会将它与生成多项式在模2下进行除法,若所得的余数为0,则在很大概率下可以确定传输过程没有发生错误。

最后一步检验模2整除后为何余0

延用前面多项式的符号,我们有第③步的
f ( x ) = d ( x ) ⋅ x m (1) f(x)=d(x)\cdot x^m\tag{1} f(x)=d(x)xm(1)
第④步的
f ( x ) = p ( x ) q ( x ) + r ( x ) (2) f(x)=p(x)q(x)+r(x)\tag{2} f(x)=p(x)q(x)+r(x)(2)
在第⑤步操作中,存在如下关系式:
d 1 ( x ) = d ( x ) ⋅ x m + r ( x ) (3) d_1(x)=d(x)\cdot x^m+r(x)\tag{3} d1(x)=d(x)xm+r(x)(3)
由(1)&(3),有
d 1 ( x ) = f ( x ) + r ( x ) (4) d_1(x)=f(x)+r(x)\tag{4} d1(x)=f(x)+r(x)(4)
因为该多项式环是GF(2),因此,加一个数等同于减一个数,故有
d 1 ( x ) = f ( x ) − r ( x ) (5) d_1(x)=f(x)-r(x)\tag{5} d1(x)=f(x)r(x)(5)
联合(2),最终得到
d 1 ( x ) = p ( x ) q ( x ) (6) d_1(x)=p(x)q(x)\tag{6} d1(x)=p(x)q(x)(6)
d 1 ( x ) d_1(x) d1(x)不就正好对应我们接收端接收到的二进制串吗?由(6),我们知道余数为0

在只错一位的情况下,余数只与多项式结构有关

接下来我们讨论检错功能,这里只讨论传输过程中之多错一位的情形。先举个例子:
假设传输多项式为 M ( x ) = x 3 + 1 M(x)=x^3+1 M(x)=x3+1,生成多项式为 G ( x ) = x 3 + x + 1 G(x)=x^3+x+1 G(x)=x3+x+1,对应的二进制串就分别为1001和1011。用左移3位得到的1001000模2除以1011,可以得到余数110,将110连接到1001后面,得到 M ( x ) M(x) M(x)对应的CRC码位1001110.
发送端发送的信号对应的多项式是 d 1 ( x ) d_1(x) d1(x),设接收端接收到的信号对应的多项式为 d 2 ( x ) d_2(x) d2(x),简单计算,有下表:

d_2(x)对应的二进制串与生成多项式模2后的余数
1001110000
0001110101
1101110111
1011110110
1000110011
1001010101
1001100010
1001111001

(听说这也是“循环”二字的由来)
我们自然而然的想问一个问题,在固定生成多项式下,只要传输的多项式最高项阶数相同,那么出错位对应的余数会不会改变?
答案是不会改变。延用前面符号,假设出错位在第 k k k位( 1 ≤ k ≤ n + m + 1 1\le k\le n+m+1 1kn+m+1),则
d 2 ( x ) = d 1 ( x ) + x k − 1 (7) d_2(x)=d_1(x)+x^{k-1}\tag{7} d2(x)=d1(x)+xk1(7)
x k − 1 x^{k-1} xk1 进行带余除法
x k − 1 = p ( x ) s ( x ) + t ( x ) (8) x^{k-1}=p(x)s(x)+t(x)\tag{8} xk1=p(x)s(x)+t(x)(8)
可以看到(8)对 d ( x ) d(x) d(x) 是什么并不关心。

最后还剩一个我未解决的问题:在满足式 2 m ≥ n + m + 1 2^m\ge n+m+1 2mn+m+1 的条件下,错一位所对应的余数是不是各不相同?好像是各不相同,但具体的推导我还没证出来,证出来再补坑。

### 回答1: crc32.ec 林子深,是一位有才华且有影响力的人物。他以其在计算机科学领域的成就而闻名于世。crc32代表循环冗余校验32位,是一种广泛应用于数据传输和校验的算法。林子深在crc32算法的研究和应用方面做出了重要的贡献。 林子深对crc32算法进行了深入的研究和改进,提出了一种优化的crc32.ec算法。此算法在数据校验方面具有更高的性能和效率,使得数据传输更加可靠和安全。林子深的研究工作大大推动了crc32算法的发展和应用,对于提升数据传输质量和保护数据的完整性起到了重要的作用。 林子深不仅在算法研究方面有着卓越的才能,他还是一位杰出的教育家和导师。他积极培养年轻的科学家和工程师,将自己的知识和经验传授给下一代。他的学生们纷纷在计算机科学领域取得了卓越的成就,林子深的学术影响力远远超越了他个人的成就。 除了在学术界的成就,林子深也以其谦虚和诚实的个性受到人们的尊敬。他对自己的研究工作和学术成果不断追求进步,从不停止探索和学习。他坚信只有不断追求进步,才能在科学领域中取得突破和创新。 总之,crc32.ec 林子深是一位在计算机科学领域有着卓越贡献和影响力的人物。他的研究成果推动了crc32算法的发展和应用,提升了数据传输的可靠性和安全性。同时,他作为教育家和导师,培养了一批优秀的学生,为学术界和科学界培养了更多的人才。林子深以其谦虚和诚实的品质也赢得了人们的敬佩。 ### 回答2: crc32.ec是一个计算CRC32校验值的工具,可以用于验证数据的完整性。而“林子深”是一个诗意的形容词短语,形容林木茂密、蔚然成林的景象。这个短语可以引申为指深远而密集的思考或者学术研究的境界。将这两个词组合在一起,可以理解为在计算CRC32校验值的过程中进行了深入、彻底的分析和思考。 CRC32是一种循环冗余校验的算法,用于检测和校验数据传输过程中出现的错误。它通过计算数据的校验值,与传输中的校验值进行比较,从而判断数据是否被篡改或损坏。而使用crc32.ec这个工具,可以对数据进行高效、准确的CRC32校验。 如果我们将CRC32和“林子深”进行对比,不难发现它们都具有一种追求准确性和完整性的特质。计算CRC32校验值需要对数据进行逐位的分析和计算,以保证校验结果的准确性。而“林子深”则意味着对某个领域的彻底研究和思考,追求事物内在深层次的真实性。 因此,crc32.ec林子深可以理解为一个在计算CRC32校验值的过程中,进行了深入研究和思考的工具。它不仅仅是一个简单的计算工具,更是一种对数据完整性的保障和对技术的追求。它代表着对数据校验的高度重视和对知识探索的不懈追求。 ### 回答3: crc32.ec是一个非常简单但有效的校验算法,用于对数据进行校验和的计算。CRC32代表循环冗余校验32位,是一种常用的校验算法之一。而林子深是一个常见的名字。 CRC32算法原理是对输入数据进行多项式除法运算,通过生成固定长度的校验和来判断数据是否被更改或错误。它可以对任意长度的数据进行校验,并且具有很高的错误检测能力。这意味着即使在数据传输过程中发生了一些错误,CRC32也能帮助我们检测到这些错误,并防止对数据的进一步处理。 林子深是一个普通的人名,没有直接与CRC32.ec相关的含义。但是,我们可以将林子深看作是一个数据,通过CRC32.ec算法来计算校验和。校验和会是一个固定长度的数据,代表了林子深这个名字的校验值。 总结来说,crc32.ec是一个校验算法,而林子深是一个普通的人名。我们可以使用CRC32算法对林子深这个名字进行校验和计算,从而确保数据的完整性和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值