Error detection and correction are important topics in data communication. There are generally three types of errors that can occur during transmission: single bit errors, multiple bit errors, and burst errors. Error detecting codes like parity bits and cyclic redundancy checks (CRCs) are added to transmitted data to detect errors by providing redundancy. CRC codes use cyclic shifts of codewords to provide effective error detection in digital communication.