In addition to the error detection codes discussed so far, there also exist error-correcting codes. For a particular class of errors, these not only raise the flag that an error has occurred, they are able to indicate where the bad bit(s) are. This tutorial does not deal with ECCs, as they are generally even more complex than CRCs and frequently are based on Reed-Solomon codes. However, the interested reader may find single-bit-correcting Hamming codes to be relatively easy to understand and fascinating piece of information, which you might plan to casually introduce in your next geeky small talk.
Error Correction Codes (ECC)