【问题标题】:CRC failure quoteCRC失败报价
【发布时间】:2017-01-11 14:56:18
【问题描述】:

我最近使用 CRC 8 来检查我的数据是否有误码。我的数据是 320 字节长。对 320 字节数据使用 8 位 CRC 时,未检测到位错误的概率有多高?

老实说,我找不到有关失败报价的任何信息。到目前为止它工作得很好,但我只是好奇它会有多好,以及是否需要使用 16 位 CRC。我使用的多项式是 0x07。

谢谢!

【问题讨论】:

  • 谷歌搜索“未检测到错误的 crc 概率”会产生什么结果?对我来说,结果是 35k。
  • 这不是编程,而是一般的数学问题。有一些文档详细说明了您应该阅读的 CRC。简而言之:没有简单的答案。
  • @Olaf:没关系。该站点游览特别指出有关“软件算法”的问题是主题。 CRC 在编程中被广泛使用,并且它们的算法具有一些属性(错误检测率),我认为可以在 Stack Overflow 等编程论坛中合理地讨论这些属性。 @大流士:This page may interest you。 CRC 可能会以 100% 的比率检测到一些错误(例如,单个位翻转),但通常 8 位校验和最多只能捕获由于冲突导致的所有可能错误的 ~99.6%。
  • @Cornstalks:不是。你想阅读How to Ask。并且 CRC 不是“软件算法”。实际上它们已经(并且正在)在硬件中实现。而且我们不是讨论网站。
  • @Olaf:并非所有 CRC 都在硬件中实现。我合作过的都是用软件实现的。而且我认为您可能对我对“讨论”的使用读得太多了。提出问题并得到答案是一种讨论形式。我指的不是在其他论坛上进行的长时间的来回对话。可能存在更好的词,但可惜的是,“讨论”是我想到的第一个词,我一直想不出更好的词。

标签: crc crc16


【解决方案1】:

消息的长度无关紧要,只要它至少为 8 位即可。那么有大量错误的误报概率是1/256。对于少量错误,误报的概率可以为零。将始终检测到连续的 8 位错误,不会出现误报。

通常,对于消息中的 n 个错误,n 位 CRC 的误报率为 2-n,可以是任意长度。

【讨论】:

  • 我真的不明白 - 为什么未检测到的错误的概率不取决于数据长度?我不应该在更大的文件上有更多未检测到的错误吗?
  • 错误溜过的概率当然取决于消息(实际上是:多边形)的长度。它还取决于错误的类型(单个位、序列、序列长度等)。此外,对于相同长度,某些多边形比其他多边形提供更好的检测。
  • 首先发生错误的概率很可能是消息长度的函数,具体取决于错误源的详细信息。然而,比 CRC 长度更多的错误不会被 CRC检测到的概率只是损坏消息的 CRC 意外地变成原始消息的 CRC 的概率。很容易看出,该概率是可能的 CRC 值数量的 1。
  • @EugeneSh.: 愚蠢的我:-) 不知道我为什么要写多边形。
  • @MarkAdler:碰撞的概率当然会随着消息的长度而增加。否则就没有理由为更长的消息使用更长的 poly_nomials_。话虽如此,您仍然忽略了一个事实,即对于相同的长度,存在更好和更差的多项式。
猜你喜欢
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 2017-07-10
  • 2018-01-18
  • 2016-08-06
  • 2018-08-02
  • 1970-01-01
相关资源
最近更新 更多