In information theory and coding, an error-correcting code or ECC is a code in which each data signal conforms to specific rules of construction so that departures from this construction in the received signal can generally be automatically detected and corrected. It is used in computer data storage, for example in dynamic RAM, and in data transmission. Examples include Hamming code, Reed-Solomon code, Golay Code, and others. The simplest error correcting codes can correct single-bit errors (single error correction or SEC) and detect double-bit errors (double error detection or DED). Other codes can detect or correct multi-bit errors.
Note 1: If the number of errors is less than or equal to the maximum correctable threshold of the code, all errors will be corrected.
Note 3: The two main classes of error-correcting codes are block codes and convolutional codes.
See also Hamming code and Reed-Solomon code; or, for state-of-the-art codes developed from 1993 to 2003, see sparse graph codes, specifically low-density parity-check codes, turbo codes, and digital fountain codes.