我学会了一种名为crc的错误检测技术。 crc计算是在模2运算中完成的,没有附加或在减法中借用。我想知道为什么crc采用模2算术而不是常规二进制算术。是否更容易在数字电路中实现?
答案 0 :(得分:0)
也许总比没有答案晚。 CRC将数据视为多项式的1位系数的字符串,因为这些系数是模2的数字。从数学角度来看,对于n位CRC,数据多项式乘以x ^ n,实际上将n 0位相加将数据的系数乘以n + 1位的CRC多项式,得到剩余的位,即CRC。如果使用CRC“编码”数据,则从数据+零中“减去”余数,但是对于单比特系数,加法和减法都是异或,因此CRC仅附加到数据上,替换了原先的零。附加到数据中以生成CRC。
之所以没有对系数进行进位或借位是因为它是多项式数学。
尽管未对CRC进行处理,但里德所罗门代码有点相似,但是多项式系数可能是除2以外的一些素数的模数,例如929,对于2以外的素数,重要的是要跟踪何时使用除2以外的质数的加法或减法。
https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction