0% found this document useful (0 votes)
52 views14 pages

Stuart Hansen University of Wisconsin - Parkside

This document discusses Hamming codes, which are error-correcting codes invented by Richard Hamming in 1950. Hamming codes work by using parity bits to detect and locate errors in binary data. The document explains how the Hamming (7,4) code uses 3 parity bits to detect and correct single bit errors or detect double bit errors in groups of 7 bits. It notes that Hamming codes can be implemented using matrix multiplication. The document also provides background on Hamming codes and suggestions for variations students could explore when implementing Hamming codes as a programming assignment.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views14 pages

Stuart Hansen University of Wisconsin - Parkside

This document discusses Hamming codes, which are error-correcting codes invented by Richard Hamming in 1950. Hamming codes work by using parity bits to detect and locate errors in binary data. The document explains how the Hamming (7,4) code uses 3 parity bits to detect and correct single bit errors or detect double bit errors in groups of 7 bits. It notes that Hamming codes can be implemented using matrix multiplication. The document also provides background on Hamming codes and suggestions for variations students could explore when implementing Hamming codes as a programming assignment.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 14

Stuart Hansen

University of Wisconsin - Parkside


Curricular Fit
Late CS2 or early Data Structures
Discrete Math background is required
Matrix Multiplication
Binary data representations
Historical Background
Early computer input would frequently contain errors
1950 Richard Hamming invented the error correcting
algorithm that now bears his name

Early ACM guidelines included a Files course, which


often covered error correcting codes
How Hamming Codes Work
One parity bit can tell us an error occurred
Multiple parity bits can also tell us where it occurred
O(lg(n)) bits needed to detect and correct one bit
errors
Hamming (7, 4)
7 bits total
4 data bits
3 parity bits

Can find and correct 1 bit errors


or
Can find but not correct 2 bit errors
Hamming Bits Table
Example
Byte 1011 0001
Two data blocks, 1011 and 0001.
Expand the first block to 7 bits: _ _ 1 _ 0 1 1.
Bit 1 is 0, because b3+b5+b7 is even.
Bit 2 is 1, b3+b6+b7 is odd.
bit 4 is 0, because b5+b6+b7 is even.
Our 7 bit block is: 0 1 1 0 0 1 1

Repeat for right block giving 1 1 01001


Detecting Errors
0110111
Re-Check each parity bit

Bits 1 and 4 are incorrect

1 + 4 = 5, so the error occurred in bit 5


Matrices and Hamming Codes
Can both encode and detect errors using modular
matrix multiplication
Code generation matrix G
Hamming Niftiness
Students still like to know how things work.
Assignment integrates binary data representations,
matrix multiplication and programming.
Alternative data representations are intriguing.
Watch out!
Inelegancies
(Java’s) Integer.toBinaryString()
Integer math rather than bitwise operators

Students want to see the 0s and 1s


Variations on a Theme
Input can be:
 String of 0s and 1s
 Integers
 Arbitrary sequence of bytes

Processing can be:


 Brute force
 Matrix multiplication

Output can be:


 Bytes
 Bitstream
Improvising on a Theme
1. Hamming (7,4) leaves one bit empty per byte.
 This bit can be used for a parity check of the entire code block
 Allows program to distinguish between 1 and 2 bit errors

2. Hamming (15, 11) etc.


3. Reed-Solomon and other error correcting codes.
Questions?

You might also like