求CRC校验码

求CRC校验码

Content #

使用多项式(模2除法)运算后的余数为校验字段,若信息位为n,则将其左移k 位,被长度位k+1的生成多项式相除,所得的K位余数即成为K个信息位,构成n+k 位编码。

例题:假设原始信息串为10110,CRC 的生成多项式为\(G(x)=x^4+x+1\),求CRC校验码。

  1. 在原始信息位后面添0,假设生成多项式的阶为r,则在原始信息位后添加r个 0,本题中,G(x)阶为4,则在原始信息串后加4个0,得到的新串为101100000,作为被除数。
  2. 由多项式得到除数,多项式中x的幂指数存在的位置1,不存在的位置0。本题中,x的幂指数为0,1,4的变量都存在,而幂指数为2,3的不存在,因此得到串 10011。
  3. 生成CRC校验码,将前两步得出的被除数和除数进行模2除法运算(即不进位也不借位的除法运算)。
  4. 生成最终发送信息串,将余数添加到原始信息后。上例中,原始信息为10110,添加余数1111后,结果为10110 1111。发送方将此数据发送给接收方。
  5. 接收方进行校验。接收方的CRC 校验过程与生成过程类似,接收方接收了带校验和的帧后,用多项式G(x)来除。余数为0,则表示信息无错;否则要求发送方进行重传。

注意:收发信息双方需使用相同的生成多项式。

From #