CRC是否具有以下功能

问题描述:

当数据传输被篡改1位或2位时,接收机能自动纠正它吗?CRC是否具有以下功能

+0

哪种CRC算法?多少位?这个问题真的很含糊。阅读[*链接](http://en.wikipedia.org/wiki/Cyclic_redundancy_check)了解更多信息。 – 2011-02-24 01:46:19

+0

伙计有这个真棒网站,我认为它叫“维基比达”或什么的。 Idk的人,你应该检查出来。 – rook 2011-02-24 02:47:37

不,CRC是一个错误检测代码,而不是一个错误纠正码。

更多here

CRC主要用作一个检错码。但是,如果总比特数(包括CRC中的比特数)小于CRC的周期,则可以通过计算综合症(xor计算和接收的CRC)来校正单比特错误。如果单独翻转,每一位都会产生一个独特的综合征。我们可以迭代CRC算法来查找与每个位相关的综合征;如果发现与每个位相关的综合症,可以翻转它并纠正一位错误。

但是,这样做的一个主要危险是,CRC对于拒绝伪造数据将不太有用。如果对15个字节的数据包使用8位CRC,则256个随机数据包中只有一个会通过有效性,但所有随机数据包的一半可以通过翻转一位来“纠正”。

+0

为此,CRC必须能够检测到所有1位和2位错误。 – philcolbourn 2014-04-05 04:57:01

+0

@philcolbourn:如果一个CRC的周期为N,那么它将无法检测到的任意长度输入的唯一两位错误将是那些错误数量为N位数倍的错误。如果输入流为N位或更短,则会检测到所有的两位错误。 – supercat 2014-04-05 23:14:04

+0

是的,这听起来没错。我认为N非常大 - 比16和32位CRC的大多数数据包或帧大小要大。但对于8位CRC来说,这可能是个问题 - 对吗? – philcolbourn 2014-04-06 09:27:28