CRC glossary: terms and notation
Quick definitions for CRC terms the parameter guides don't spell out — notation, verification terms, and error-detection theory.
Polynomial representations
A CRC generator polynomial can be written down in more than one valid hex form, because a degree-n polynomial always has an implicit x^n term (coefficient 1) and, for the polynomials CRCs actually use, an explicit x^0 term that is also 1. Different references drop different one of those two fixed bits, which produces different-looking hex values for the exact same mathematical polynomial.
- Normal form — the standard representation this site and most calculators use: an n-bit hex value with the implicit top term (x^n) dropped. CRC-32/ISO-HDLC's polynomial is written 0x04C11DB7 in normal form.
- Reversed form — the normal form with its n bits read in the opposite order (bit-reversed), used internally by table-driven engines that shift the register right instead of left. CRC-32/ISO-HDLC's polynomial in reversed form is 0xEDB88320; CRC-16/CCITT's 0x1021 reverses to 0x8408.
- Koopman notation — keeps the implicit top bit explicit instead and drops the bottom bit (also always 1) rather than the top one, so it looks like a different hex value from the same polynomial. CRC-32/ISO-HDLC's polynomial in Koopman notation is 0x82608EDB. It is common in academic literature comparing polynomials by error-detection strength.
- Reversed reciprocal form — the bit-reversal of the Koopman form, appearing as a fourth notation alongside normal, reversed, and Koopman in some CRC references, including the Catalogue of CRC Algorithms. CRC-32/ISO-HDLC's polynomial in this form is 0xDB710641.
Verification terms
These terms describe how a CRC is confirmed to be correct, as distinct from how it is calculated.
- Check value — the CRC of the fixed ASCII test string 123456789, published for every catalogued model as a compact interoperability test.
- Residue — the fixed, model-specific remainder produced by processing a valid message immediately followed by its own correctly encoded CRC; used to validate a complete received codeword in one pass instead of separating data from CRC.
- Frame Check Sequence (FCS) — the general telecom term for a trailing error-detection field appended to a frame; in HDLC, X.25, and similar link-layer protocols the FCS is specifically a CRC.
Error-detection theory
These terms describe why a CRC catches the errors it catches, rather than how to compute one.
- GF(2) (Galois field of two elements) — the arithmetic CRC division actually uses: addition and subtraction are both XOR, and there is no carry. A message is treated as one large binary polynomial and divided by the generator polynomial using this arithmetic.
- Codeword — the data being protected together with its correctly appended CRC, treated as a single polynomial. A receiver can either recompute the CRC and compare it, or divide the entire codeword by the generator polynomial and check the result against the residue.
- Hamming distance — the minimum number of single-bit changes needed to turn one valid codeword into a different valid codeword for a given CRC and message length. A larger Hamming distance means more simultaneous bit errors are guaranteed to be caught, which is why polynomial choice — not just width — affects detection strength.
- Burst error — a contiguous run of corrupted bits, as opposed to isolated single-bit errors scattered through a message. An n-bit CRC is guaranteed to detect every burst error shorter than or equal to n bits, which is a large part of why CRCs are preferred over simple additive checksums on links prone to noise bursts.
Go deeper
This glossary is intentionally short — each term below has a full guide that works through it with examples.
Apply this reference
Change CRC parameters and compare standard algorithm results using the browser-based calculator.