CRC – Cyclic Redundance Checking (I)

Os códigos de correção de erros são muito utilizados em enlaces sem fio, conhecidos por serem ruidosos e propensos a erros em comparação com os fio de cobre ou a fibra óptica. Sem códigos de correção erros, seria difícil conseguir transmitir dados com garantia de entrega correta dos dados. Por características dos meios de transmissão, usando o fibra óptica ou fio de cobre, a taxa de erros é muito mais baixa, e assim a detecção de erros e a retransmissão em geral são mais eficientes para lidar com o erro ocasional.

O método mais difundido é o código polinomial, também conhecido como código de redundância cíclica ou CRC (Cyclic Redundancy Check). Os códigos  polinomiais se baseiam no tratamento de strings como representações de polinômios com coeficientes 0 e 1 apenas. Um quadro de k bits é considerado a lista de coeficientes para um polinômio com k termos, variando desde x k-1 até a x 0. Dizemos que tal polinômio é de grau k-1. O bit de alta ordem (mais á esquerda) é o coeficiente de x k-1; o bit seguinte é o coeficiente x k-2 e assim por diante. Por exemplo, 110001 tem 6 bits, portanto representa um polinômio de seis termos com os coeficientes, 1, 1, 0, 0, 0 e 1: x5 +  x4 + x0.

A aritmética polinomial é feita em módulo 2, de acordo com as regras da teoria algébrica. Não há transportes para a adição nem empréstimos para a subtração. Tanto a adição quanto a subtração são idênticas à operação OR exclusivo.