类比思路
- 收发双方约定,被“3”整除。这里的“3”,就类似CRC编码里的生成多项式。
- 发送方发送数字“23”。这里的“23”,就对应原本要发送的数据。
- 23/3=7+2.将23改成21发送。十进制没有在后面补0这项操作,而是直接对原数据进行修改,这就注定了在没有额外约定的情况下,接收方虽然能检错,但是却还原不出原始信息。
- 为了不污染原始数据,CRC编码采取在数据末尾增加r位的方式,即保留原始数据信息(前k位),又为冗余位制造出了空间(后r位)。
- XrM(X) = k位数据 + r位“0”,除以生成多项式G(X),得到的余式R(X)就像例子里的“2”,需要被减掉。
- 我们知道在不进位的二进制运算(异或运算)中,加法和减法其实效果是一样的。所以XrM(X) + R(X) 和 XrM(X) - R(X),得到的结果是一样的,并且都能被G(X)整除。
- 所以如果收方收到的是正确的 XrM(X) + R(X) 或 XrM(X) - R(X) 的话,就一定能够被G(X)整除的~