Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Hamming Code Error Detection/Correcting in Java Hello all. I am trying to get the below code to display a message to the console when an

Hamming Code Error Detection/Correcting in Java

Hello all. I am trying to get the below code to display a message to the console when an error is corrected, as in the sample below:

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

Currently I am able to display the first and last line but not able to show the "Error in bit" portion. I am using hamming.txt as the input file which contains a list of hexadecimal numbers. How can I show the error in bit and corrected in character portion?

import java.io.*;

import java.util.*;

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");

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Practical Neo4j

Authors: Gregory Jordan

1st Edition

1484200225, 9781484200223

More Books

Students also viewed these Databases questions

Question

What are the three areas of finance?

Answered: 1 week ago

Question

8. Provide recommendations for how to manage knowledge.

Answered: 1 week ago

Question

5. Develop a self-management module for a training program.

Answered: 1 week ago