Error-correcting codes (ECC) are a sequence of numbers generated by specific algorithms for detecting and removing errors in data that has been transmitted over noisy channels.
When bits are transmitted over the computer network, they are subject to get corrupted due to interference and network problems. The corrupted bits leads to spurious data being received by the receiver and are called errors.
Error correcting codes ascertain the exact number of bits that has been corrupted and the location of the corrupted bits, within the limitations in algorithm. This method of correcting errors at the receiver’s end is called forward error correction.
ECCs can be broadly categorized into two types, block codes and convolution codes.
Block codes − The message is divided into fixed-sized blocks of bits, to which redundant bits are added for error detection or correction.
Convolutional codes − The message comprises of data streams of arbitrary length and parity symbols are generated by the sliding application of a Boolean function to the data stream.
There are four popularly used error correction codes.
Hamming Codes − It is a block code that is capable of detecting up to two simultaneous bit errors and correcting single-bit errors.
Binary Convolution Code − Here, an encoder processes an input sequence of bits of arbitrary length and generates a sequence of output bits.
Reed - Solomon Code − They are block codes that are capable of correcting burst errors in the received data block.
Low-Density Parity Check Code − It is a block code specified by a parity-check matrix containing a low density of 1s. They are suitable for large block sizes in very noisy channels.