我试图找出如何计算任意CRC多项式的错误检测能力。检查CRC多项式的错误检测能力
我知道有可能(或可能不会)适用于任意多项式各种错误检测功能:
检测单比特错误的: 所有CRC能做到这一点,因为这不仅需要CRC宽度> = 1.
突发错误的检测: 所有的CRC都可以检测突发错误,直到大小等于它们的宽度。
奇数位错误的检测: 具有偶数个项(即完整二进制多项式中的偶数个1位)的CRC可以做到这一点。
检测随机位错误(取决于帧大小): 我有一个随时可用的C算法,可以计算给定HD和多项式的最大帧大小。我没有完全理解它,但它的工作原理。
假设一个16位的CRC多项式x十八+ x 12 + x 5 + 1 = 0x11021。该多项式可以:
- 检测所有单位错误(数据大小无关)。
- 检测所有突发错误高达16位宽度(数据大小无关)。
- 检测所有奇数位错误(因为它有4个多项式项;数据大小无关)。
- 检测3位错误(HD4),最大可达32571位数据大小。
以上是否正确?
是否有额外的CRC错误检测功能?如果是,如果任意CRC多项式支持它们,我该如何检查(没有深入的数学知识)?
这个问题很有趣。这可能是更好的cs.stackexchange.com – Nayuki
@Nayuki:你可能是对的。先让我们看看这里发生了什么...... – Silicomancer