What is Polynomial Code?

A polynomial code is a linear code having a set of valid code words that comprises of polynomials divisible by a shorter fixed polynomial is known as generator polynomial.

They are used for error detection and correction during the transmission of data as well as storage of data.

Types of Polynomial Codes

The types of polynomial codes are:

  • Cyclic Redundancy Code
  • Bose–Chaudhuri–Hocquenghem (BCH) Codes
  • Reed–Solomon Codes

Representation of Bit Strings with Polynomials

The code words, which are essentially bit strings, are represented by polynomials whose coefficients are either 0 or 1. A 𝑘 – bit word is represented by a polynomial ranging from 𝑥0 to 𝑥𝑘−1. The order of this polynomial is the power of the highest coefficient, i.e. (𝑘−1).

For example, an 8 – bit word 11001101 is represented by the following polynomial of order 7:

1𝑥7+ 1𝑥6+ 0𝑥5+ 0𝑥4+1𝑥3+ 1𝑥2+ 0𝑥1+1𝑥0 = 𝑥7+𝑥6+ 𝑥3+ 𝑥2+1

Modulo 2 Arithmetic

Polynomial code operations are done by modulo 2 arithmetic.

  • Addition and Subtraction: According to the rules of finite field theory, in modulo 2 arithmetic, addition and subtraction has no carries or borrows. Thus, both the operations are same as XOR (exclusive OR) operations.

OperandOperandModulo 2 AdditionModulo 2 Subtraction

For example, if there are two words 11001011 and 10101111, both addition and subtraction will give the result 01100100.

  • Multiplication: 

    Modulo 2 multiplication is the same as AND operation.

OperandOperandModulo 2 Multiplication

Generator Polynomial

When messages are encoded using polynomial code, a fixed polynomial called generator polynomial,𝐺(𝑥) is used. The length of 𝐺(𝑥) should be less than the length of the messages it encodes.

In CRC encoding,  𝐺(𝑥) should have 1 in both its MSB (most significant bit) and LSB (least significant bit) positions. In the process of encoding, CRC bits are appended to the message so that the resultant frame is divisible by 𝐺(𝑥).