我正在学习CRC,搜索引擎和SO在这方面没有任何结果......
为什么我们有“正常”和“反转”和“倒数”多项式?有人喜欢Big Endian,Little Endian或其他什么吗?
答案 0 :(得分:4)
CRC的经典定义将使用非反射多项式,其将CRC向左移位。如果用于计算的字大小大于CRC,那么最后需要一个操作来清除移入的高位(例如& 0xffff
用于16位CRC)。 p>
你可以翻转整个事物,使用反射多项式,然后向右移动而不是向左移动。这给出了相同的CRC属性,但是来自消息的比特从最低到最高有效位有效地操作,而不是从大多数到最低有效位。由于你正在向右移动,无关的位从底部掉落到遗忘中,并且不需要额外的操作。这可能是使用更快更紧凑的实现的早期动机之一。
有时原始硬件的规格是从最低到最重要的位进行处理,因此您必须使用反射版本。
不,这些都不利于小端或大端。在little-endian或big-endian架构中,可以很容易地计算出任何一种CRC。