is accepted only if all the frames have the same FCS received and calculated. We add bits to the frames to produce redundancy. The amount of redundancy we de- sign into the system, the relative lengths of the frame and FCS, depends on the error conditions we are trying to protect our data against. A frame with 16 bits of FCS added to it has 1 chance in 216, 1 in 65,536, of getting a wrong answer that passes the test. A simpler system of error recovery is the parity bit, where a bit is added and set to 0 if the original bit stream has an even number of 1s and 1 otherwise. We call them par- ity bits because they measure the even or odd parity of a collection of bits. The effect of this is that the entire bit set, including the parity bit, has an even number of 1s. This is typically not used in data transport, but it was used in older modem systems and is used in memory systems. 14 This is done because parity bits require so much less com- putation to check, and memory systems have to run very fast. The calculation involves remainders of polynomials in base 2. 13 This is like the "casting out nines" that many of us learned about in elementary school, where we added up the digits of all the numbers, added up those digits until there was just one digit left, and did the additions, subtractions, and multiplications on those single-digit values. Essentially, the remaining digit is a checksum with a 1 in 9 chance of error. This is good enough for elemen- tary school, but packet data need stronger protection. Some readers may remember struggling to make modem connections by setting the number of data bits to 7 or 8 and parity to odd, even, or zero because different early computer networks had incompatible standards. Ultimately, computer memory became so reliable that the parity-checking chip generated more errors than the memory chips did, and memory parity checking was eliminated. After that, memory became inexpensive enough that its capacity was increased to include some forward er- ror correction (FEC) capability. Down