The sender keeps the long-division remainder. This lesson shows how that remainder becomes the bits appended to the message.

highlighted = computed this step

Why the remainder is transmitted

The sender does not transmit the quotient. It transmits the original message followed by the recomputed remainder.

CRC=100\text{CRC}=100

Remainder becomes CRC

The remainder 100 is the CRC. Appending it to the message gives codeword 11010011101100100.

11010011101100100=1101001110110010011010011101100\,\Vert\,100=11010011101100100
Remainder is CRCGF(2) division rows are recomputed from the exact bits.Remainder is CRCdivide by 1011dividend1101001110110000011010011101100000xor 0101101100011101100000xor 1101100111011101100000xor 2101100010111101100000xor 3101100000001101100000skip 400000001101100000skip 500000001101100000skip 600000001101100000xor 7101100000000110100000xor 8101100000000011000000xor 9101100000000001110000xor 10101100000000000101000xor 11101100000000000000100skip 1200000000000000100skip 1300000000000000100remainder100100

Decode it again

For message 10011010, the same generator gives CRC 001 and codeword 10011010001.

10011010+001=1001101000110011010+001=10011010001
Second CRCGF(2) division rows are recomputed from the exact bits.Second CRCdivide by 1011dividend1001101000010011010000xor 0101100101010000skip 100101010000xor 2101100000110000skip 300000110000skip 400000110000xor 5101100000011100xor 6101100000001010xor 7101100000000001remainder001001

Summary

The CRC is the final remainder, and the codeword is message plus remainder. Polynomial arithmetic over the exact bits; timing/throughput is not modeled here.

CRC=100\text{CRC}=100
Remainder is CRCGF(2) division rows are recomputed from the exact bits.Remainder is CRCdivide by 1011dividend1101001110110000011010011101100000xor 0101101100011101100000xor 1101100111011101100000xor 2101100010111101100000xor 3101100000001101100000skip 400000001101100000skip 500000001101100000skip 600000001101100000xor 7101100000000110100000xor 8101100000000011000000xor 9101100000000001110000xor 10101100000000000101000xor 11101100000000000000100skip 1200000000000000100skip 1300000000000000100remainder100100