Cyclic codes are a type of linear code where any cyclic shift of a codeword is also a codeword. This allows for efficient encoding and decoding using shift registers.
Encoding of cyclic codes can be done by dividing the message polynomial by the generator polynomial, with the remainder becoming the parity bits. Encoding circuits use shift registers with feedback to efficiently perform this division. Decoding uses the syndrome, which is computed by shifting the received word into a syndrome register. A decoder then attempts to match the syndrome to an error pattern, correcting errors one symbol at a time by shifting the syndrome and received word simultaneously.