cyclic redundancy check

<algorithm> (CRC) A number derived from, and stored or transmitted with, a block of data in order to detect corruption. By recalculating the CRC and comparing it to the value originally transmitted, the receiver can detect some types of transmission errors.

A CRC is often calculated by summing words or bytes of the data in an N bit accumulator. Overflow is ignored so the summation is "cyclic" modulo 2^N. The CRC is "redundant" in that it adds no information. A parity bit can be considered a one bit CRC for a string of bits. A single corrupted bit in the data will result in a one bit change in the calculated CRC but multiple corrupted bits may cancel each other out.

Ethernet packets have a 32 bit CRC. Many disk formats include a CRC at some level.

The term "checksum" normally means the same as CRC, though one might treat overflow of a checksum as an error rather than a feature.

Timothy P. Stockman <tps@ies.laf.in.us> says, "The CRC algorithm is definitely different than the checksum algorithm, and involves either shifts and XOR's or a table lookup, whereas checksum is just a straight arithmetic sum (modulo 256 or 65536). The CRC algorithm is actually some sort of division, as I understand it."

[Clarification?]

(21 Mar 1996)