# East Texas Baptist University Hamming Code Worksheet

Description

1 attachmentsSlide 1 of 1attachment_1attachment_1

Unformatted Attachment Preview

Hamming Code
import java.io.*;
import java.util.*;
// This program reads a text file, input.txt.
// For each character, it produces a hexadecimal number which is the hamming
// code for 8-bit characters using even parity. These hex numbers are written to hamming.txt
// Copyright (c) Paul Koester, Dallas County Community College, 2017
public
class Hamming
{
private char letter;
// The Ascii character with no parity bits
private int[] bits = new int[12];
private int code;
// The integer value of the character with the parity bits added
public Hamming(char let) { letter = let; encode(); }
public Hamming(int c) { code = c; decode(); }
public int getCode() { return code; }
public char getLetter() { return letter; }
private void encode() {
int value = letter;
// Set value bits
for (int i = 0; i < 12; i++) { if (i != 0 && i != 1 && i != 3 && i != 7) { bits[i] = value % 2; value /= 2; } } // Set parity bits bits[0] = bits[2] ^ bits[4] ^ bits[6] ^ bits[8] ^ bits[10]; // ^ is XOR in Java bits[1] = bits[2] ^ bits[5] ^ bits[6] ^ bits[9] ^ bits[10]; bits[3] = bits[4] ^ bits[5] ^ bits[6] ^ bits[11]; bits[7] = bits[8] ^ bits[9] ^ bits[10] ^ bits[11]; // compute integer code code = 0; for (int i = 11; i >= 0; i–) {
code *= 2;
code += bits[i];
}
}
private void decode() {
int error = 0;
int value = code;
// Set the bit array
for (int i = 0; i < 12; i++) { bits[i] = value % 2; value /= 2; } // Check for transmission errors if (bits[0] != (bits[2] ^ bits[4] ^ bits[6] ^ bits[8] ^ bits[10])) error += 1; if (bits[1] != (bits[2] ^ bits[5] ^ bits[6] ^ bits[9] ^ bits[10])) error += 2; if (bits[3] != (bits[4] ^ bits[5] ^ bits[6] ^ bits[11])) error += 4; if (bits[7] != (bits[8] ^ bits[9] ^ bits[10] ^ bits[11])) error += 8; // Correct Error if (error != 0) bits[error - 1] ^= 1; // Extract character letter = 0; for (int i = 11; i >= 0; i–) {
if (i != 0 && i != 1 && i != 3 && i != 7) {
letter *= 2;
letter += bits[i];
}
}
// Display where error detected
if (error != 0)
System.out.println(“Error in bit ” + (error – 1) + ” corrected in character ” +
letter);
}
public static void main(String[] args) throws FileNotFoundException
{
Scanner inFile = new Scanner( new File(“hamming.txt”));
PrintStream outFile = new PrintStream(new File(“output.txt”));
String line;
int code;
System.out.println(“File hamming.txt opened”);
while (inFile.hasNextInt(16)) {
code = inFile.nextInt(16);
// Decode the Hex code to get a character
// Create a Hamming object
Hamming ham = new Hamming(code);
// Display the decoded character
outFile.print(ham.getLetter());
}
inFile.close();
System.out.println(“File output.txt closed”);
}
}
COSC 2425 – Computer Organization
Lab #2 – Hamming Code
Attached to this assignment is a Java program that converts a text file to a list of hexadecimal
numbers. Each of those hexidecimal numbers represents the bit pattern of a character from the
file with the parity bits (even parity) for a hamming code inserted. Each text character takes 8
bits and the hamming code adds 4 bits. This hamming code provides single-bit error correction.
Requirements 1. The program must be written in Java. If you have not used Java before, you can
learn it enough to do this assignment, by looking at the provided program. 2. You can use
Eclipse to write, compile and test your program, but you may also use any other development
environment you like. Only the .java file will be submitted. 3. The program will use the provided
Hamming class. It will implement the decode function. The decode function is the reverse of the
encode function, but it also performs single bit correction when necessary. 4. Display a message
to the console when an error is corrected, as in the example below. 5. The main function must be
rewritten to read hexidecimal numbers from hamming.txt file and write decoded and corrected
text to output.txt. 6. Test the program with different input files. The instructor will test it with a
hamming.txt file different from the one provided. Hint: The Java hasNextInt(16) and nextInt(16)
(.java) file. Sample Output File hamming.txt opened Error in bit 9 corrected in character 2 Error
in bit 3 corrected in character c Error in bit 10 corrected in character p File output.txt closed
Hamming with 3 single bit errors.txt
49D
4FC
51C
49D
283
31A
329
31A
32E
282
4C8
606
667
667
64D
679
635
2C2
61F
67E
62B
62C
282
64D
679
380
7AA
282
632
64D
660
62C
2FA
52
Hamming.txt
49D
4FC
51C
49D
282
31A
329
31A
32E
282
4C8
606
667
667
64D
679
635
282
61F
67E
62B
62C
282
64D
679
780
7AA
282
632
64D
660
62C
2FA
52
Input.txt
COSC 2425 Hamming code input file.

attachment

1 Page

User generated content is uploaded by users for the purposes of learning and should be used following Studypool’s honor code & terms of service.

## Reviews, comments, and love from our customers and community:

### Article Writing

Keep doing what you do, I am really impressed by the work done.

Researcher

### PowerPoint Presentation

I am speechless…WoW! Thank you so much!

#### Stacy V.

Part-time student

### Dissertation & Thesis

This was a very well-written paper. Great work fast.

Student

### Annotated Bibliography

I love working with this company. You always go above and beyond and exceed my expectations every time.

Student

### Book Report / Review

I received my order wayyyyyyy sooner than I expected. Couldn’t ask for more.

Student

### Essay (Any Type)

On time, perfect paper

Student

### Case Study

Awesome! Great papers, and early!

#### Kaylin Green

Student

Thank you Dr. Rebecca for editing my essays! She completed my task literally in 3 hours. For sure will work with her again, she is great and follows all instructions

Researcher

### Critical Thinking / Review

Extremely thorough summary, understanding and examples found for social science readings, with edits made as needed and on time. Transparent

Customer

Perfect!

Student