Systematic code
In coding theory, a systematic code is one in which the input data are embedded in the encoded output. Similarly, a non-systematic code is one in which the output does not contain the input bits. Such codes are used to add redundant information to data; this allows errors to be detected (and possibly corrected, depending on the code used) when bits are lost or corrupted.
For example, transmitting data with a checksum is a type of systematic code: to encode the bit stream "01010110" with a simple two-bit checksum, one first calculates the checksum (01 + 01 + 01 + 10 = 01), then transmits the original stream followed by the new checksum bits: "0101011001" – note the existence of the original bits in the output. A simple nonsystematic code is Run length encoding; "01010110" might be encoded as "010 011 010 011 010 101 010" (one bit is zero, one bit is one, etc).
Examples of Systematic Codes
- Data + checksum, the error detection used in IP.
- Reed-Solomon codes, the error correction used on CDs.
Examples of Non-Systematic Codes
- Fountain codes, popular for online content distribution.