In a nutshell
CRC checks data for errors by treating the bits as one huge binary number and dividing by a fixed pattern called the generator. The leftover — the remainder — is sent alongside the data; if the receiver's division doesn't come out to zero, the data was corrupted in transit.