## Hamming Code Simulation

## written by Teresa Carrigan

- What is it?
- How it works
- How to use it
- Things to notice
- Things to try
- Extending the model
- NetLogo features
- Related models
- Credits and References
- For more information
- Download the model

## WHAT IS IT?

This model demonstrates storing of bit patterns using Hamming SEC, even parity, with up to eight data bits.

## HOW IT WORKS

First a random bit pattern is generated, of the length specified by the number-of-digits slider. Extra bits known as check bits are added so that they occupy positions 1, 2, 4, and 8. If there will be no data bits past a check bit, then that check bit is not needed.Each position is then marked with the binary equivalent of the position number. This will help us determine easily which bits are checked by which check bit. Each check bit has a single one in the binary equivalent of its position number, and checks all bits that have a one in that same place in the binary equivalent. Each check bit will force its own group to have even parity.

## HOW TO USE IT

Thesetupbutton generates a random bit pattern, of the length specified by thenumber-of-digitsslider.The

randombutton generates a random number of bits, and then uses that to generate a random bit pattern.The

stepbutton demonstrates the next step, and then stops so you can take notes. This is useful when you are first learning the method.The

gobutton does every remaining step, at a speed determined by theslow-motionslider. This is useful when you do not need to take notes between each step.The

show-againbutton starts the exact problem from the beginning. You may then click either thestepbutton or thegobutton to see the same demonstration.The

quizbutton will generate a random problem. Spaces and commas in your answer will be removed, so feel free to use them to help you count the digits.The

slow-motionslider is an easy way to adjust the speed of the display. Set it to zero if you want to show the final result as quickly as possible. 0.3 is a good setting for most purposes.The

number-of-digitsslider determines the number of data bits to be generated when thesetupbutton is pressed.

## THINGS TO NOTICE

After the first two check bits, each additional check bit allows at least double the number of data bits before another check bit is required.Although there are numerical methods for determining the number of check bits needed, we know that the check bits always go in positions that are powers of two, and if there are no data bits past a check bit position, that check bit is not needed. This gives us an easy way to determine the number of check bits needed.

The group of bits checked by a check bit is easily determined by looking at the binary equivalent of the position number. Each bit in that group will have a 1 in the same place.

## THINGS TO TRY

Set slow-motion to 0.3, click random, and then click go.Set the number-of-digits slider to the number of data bits you wish to drill, and click setup. Work each step by hand, and then click the step button to check your answer.

## EXTENDING THE MODEL

Allow the user to input the starting bit pattern.Allow for more than eight data bits.

Modify the model to use a Hamming double-error-correcting code.

## NETLOGO FEATURES

one-step uses the NetLogo run command combined with a global integer variable step to run the next step, without needing nested ifelse blocks.The arrow uses "other-BREED-here" to interact with the yellow bits.

## RELATED MODELS

## CREDITS AND REFERENCES

This model was written by Teresa W. Carrigan, 2004.Permission to use, modify or redistribute this model is hereby granted, provided that both of the following requirements are followed:

Contact Teresa Carrigan for appropriate licenses for redistribution for profit.

- this copyright notice is included.
- this model will not be redistributed for profit without permission from Teresa Carrigan.
To refer to this model in academic publications, please use: Carrigan, T. (2004). Hamming Code Simulation Blackburn College, Carlinville, IL.

In other publications, please use: Copyright 2004 by Teresa W. Carrigan. All rights reserved.

## FOR MORE INFORMATION

For more information on Hamming Codes, see one of the following textbooks:

- Null, L. and Lobur, J.
Essentials of Computer Organization and Architecture, First Edition. Jones and Bartlett. pages 77-82.- Murdocca, M. and Heuring, V.
Principles of Computer Architecture, First Edition. Prentice Hall, pages 359-365.

HomeApplets on this website were written by Teresa Carrigan in 2004, for use in computer science courses at Blackburn College, with the exception of the Fireworks applet. The applets made with NetLogo require Java 1.4.1 or higher to run. The applets made with NetBeans require Java 1.4.2 or higher to run. Applets might not run on Windows 95 or Mac OS 8 or 9. You may obtain the latest Java plugin from Sun's Java site.