Contents

Digital Communication
Other Subjects
Section Progress100%

12 of 12 articles

Reed-Solomon Codes

Non-binary cyclic codes, application in storage.

Mohith N
Updated: 19 March 2026
10 min read

Reed-Solomon codes, introduced by Irving Reed and Gustave Solomon in 1960, are a family of non-binary cyclic error-correcting codes that operate on symbols rather than individual bits. They are among the most widely deployed error-correcting codes in the world, appearing in compact discs, QR codes, deep-space communications, RAID storage, and digital television broadcasting.

Reed-Solomon codes are a natural extension of BCH codes to non-binary alphabets and are highly efficient for correcting burst errors, which corrupt multiple consecutive bits. Understanding RS codes is important for GATE aspirants and ECE students as they illustrate the power of finite field algebra in solving practical communication and storage problems.

Reed-Solomon Code: Symbol-Level StructureRS Code ParametersField: GF(2^m)Each symbol is m bits wideBlock length: n = 2^m - 1 symbolse.g., m=8 gives n=255 symbols = 255 bytesMessage symbols: kParity symbols: n - k = 2tExactly 2t parity check symbols (MDS property)Minimum distance: d_min = 2t + 1Meets Singleton bound exactly (MDS code)Corrects: t symbol errors OR 2t erasuresMDS Property and Burst Error AdvantageSingleton bound: d_min less than or equal to n - k + 1RS codes: d_min = n - k + 1 (equality, optimal)Maximum Distance Separable (MDS)Burst error spanning b bits:BCH: treats as b individual bit errorsRS (m=8): treats as ceil(b/8) symbol errorsRS efficiency advantage: burst of up to 2t*mconsecutive bits corrected using only 2t parity symbolsErasure correction: 2t erasures correctedErasure = known location, unknown value (e.g., faded channel)Each GF(2^m) symbol represents m bits; one symbol error can affect up to m consecutive bits
Figure 1: RS code structure, MDS optimality, and burst error correction efficiency

Core Concept Explanation

A Reed-Solomon code RS(n, k) over GF(2^m) has n = 2^m - 1 symbols per codeword, k information symbols, and n - k = 2t parity symbols. The key algebraic fact is that the generator polynomial g(x) = (x - alpha)(x - alpha^2) ... (x - alpha^(2t)), where alpha is a primitive element of GF(2^m). This gives g(x) exactly 2t roots and degree 2t, matching the 2t parity symbols.

Because RS codes are non-binary, each symbol is an element of GF(2^m) (for example a byte if m = 8). When an error occurs during transmission, it corrupts a symbol, which may flip 1 to m bits within that symbol. The RS decoder does not care how many bits within a corrupted symbol are wrong; it only counts the number of corrupted symbols. This is why RS codes are so efficient for burst errors: a burst of up to m consecutive bit errors corrupts only one symbol.

Reed-Solomon codes are Maximum Distance Separable (MDS) codes, meaning they meet the Singleton bound with equality: d_min = n - k + 1. No code of the same length and dimension can have a larger minimum distance. This makes RS codes optimal in terms of the error-correcting capability achievable with a given amount of redundancy.

Mathematical Expression

The generator polynomial of RS(n, k) is g(x) = product of (x - alpha^i) for i from 1 to 2t. A codeword polynomial c(x) of degree at most n-1 is a polynomial divisible by g(x). The information polynomial m(x) of degree at most k-1 is encoded as c(x) = x^(2t) times m(x) mod g(x), with the remainder appended as parity.

Decoding proceeds by computing the 2t syndromes Si = r(alpha^i) for i from 1 to 2t, then using the Berlekamp-Massey or Euclidean algorithm to find the error locator polynomial sigma(x) and error evaluator polynomial omega(x). Chien search finds error positions and Forney's algorithm computes the error magnitudes (which in RS codes are non-binary, unlike BCH where errors are always 1 in the binary case).

Practical Understanding

The most famous RS code is RS(255, 223) over GF(2^8), used by NASA for deep-space missions and also in the CD audio standard. It has n = 255, k = 223, n - k = 32 parity bytes, and t = 16, meaning it can correct any 16 corrupted bytes out of 255. In the compact disc, data is interleaved using the CIRC scheme with two levels of RS coding and cross-interleaving to handle disc scratches reliably.

In storage systems, RS codes are used in RAID-6 arrays to recover from two simultaneous disk failures, which is equivalent to correcting two symbol erasures. QR codes use RS codes over GF(2^8) with varying redundancy levels (7%, 15%, 25%, 30%) offering four error correction levels from L to H.

Shortened RS codes are also common. A shortened RS(n, k) code takes a standard RS(2^m - 1, k - (2^m - 1 - n)) code and removes leading zero symbols, yielding an (n, k) code with the same t. Shortened codes are useful when n is not a power of 2 minus 1, allowing RS codes to fit arbitrary data block sizes.

Example
Given:
RS code over GF(2^8), t = 8 symbol errors to be corrected

Why this formula applies:
RS parameters: n = 2^m - 1, n - k = 2t, d_min = 2t + 1 (MDS)

Formula:
n = 2^m - 1
n - k = 2t  =>  k = n - 2t
d_min = n - k + 1 = 2t + 1
Burst correction in bits = t * m

Substitution:
n = 2^8 - 1 = 255 symbols
n - k = 2 * 8 = 16 parity symbols
k = 255 - 16 = 239 information symbols
d_min = 2*8 + 1 = 17

Calculation:
Code rate R = k/n = 239/255 = 0.937
Burst error correction in bits = t * m = 8 * 8 = 64 consecutive bits
In comparison, a binary BCH code correcting t=8 random bit errors needs at least 8*8=64 parity bits
but RS uses only 16*8=128 parity bits to also correct 8 symbol bursts efficiently.

Final Answer:
RS(255, 239) code: corrects up to 8 symbol errors, d_min=17, rate=0.937
Can correct any burst of up to 64 consecutive bits using 16 parity symbols (bytes)
Exam Tip: RS codes always have exactly n - k = 2t parity symbols (not an inequality like BCH). This is the MDS property. Also remember: RS corrects t symbol errors OR 2t erasures (when positions are known). In mixed scenarios with e errors and s erasures, correction is possible when 2e + s is less than or equal to 2t.
Reed-Solomon Applications and Encoding/Decoding Flowk symbolsinput dataRS Encoderdivide by g(x)n symbolsk data + 2t parityChannelsymbol errorsRS DecoderBerlekamp+ForneyRS Code ApplicationsData StorageCD/DVD audio-videoQR codes (level L-H)RAID-6 disk arraysCommunicationsDeep space (NASA)DVB-S/T/C standardsxDSL outer codeError + Erasure Mix2e + s less than or equal to 2te errors + s erasuresFlexible decodingRS(255, 223): t=16, standard for deep-space, CD audio, and CCSDS satellite protocol
Figure 2: RS encoding/decoding flow and major application domains in storage and communications
  • RS codes are non-binary cyclic codes over GF(2^m); each symbol is m bits; one corrupted symbol counts as one error regardless of how many bits within it are flipped.
  • MDS property: RS codes meet the Singleton bound d_min = n - k + 1 with equality; maximum possible minimum distance for given n and k.
  • Generator polynomial: g(x) = product of (x - alpha^i) for i = 1 to 2t; degree 2t; exactly 2t parity symbols.
  • Decoding: syndromes, Berlekamp-Massey for error locator, Chien search for positions, Forney algorithm for error magnitudes.
  • Mixed error-erasure condition: 2e + s less than or equal to 2t for successful correction.

Quick Revision

  • RS(n, k) over GF(2^m): n = 2^m - 1 symbols, n - k = 2t parity symbols (exactly), d_min = 2t+1.
  • MDS: meets Singleton bound with equality; no code of same (n, k) can have larger d_min.
  • t symbol error correction; OR 2t erasure correction; OR mix with 2e + s less than or equal to 2t.
  • Burst advantage: burst of up to m * t consecutive bits corrected by t-symbol RS code.
  • Exam trap: RS n - k equals exactly 2t (MDS), while BCH n - k is at most m times t (inequality).
  • Standard code RS(255, 223): t=16, 32 parity bytes, rate 0.875, used in deep space and CD audio.
  • Forney algorithm gives error magnitude (non-binary); this step does not exist in binary BCH.

Reed-Solomon Codes Quiz

Test your knowledge of Reed-Solomon code structure, decoding, and storage applications.

Question 1 of 3

Q1.A Reed-Solomon code RS(255, 223) operates over GF(2^8). How many symbol errors can it correct?