Error Correction Code - CRC
import java.util.Scanner;
public class CRC {
static String divide(String data, String generator) {
char[] Nr = data.toCharArray();
int Drlen = generator.length();
for (int i = 0; i <= Nr.length - Drlen; i++) {
if (Nr[i] == '1') {
for (int j = 0; j < Drlen; j++) {
// XOR
Nr[i + j] =
(Nr[i + j] == generator.charAt(j))
? '0' : '1';
}
}
}
return new String(Nr)
.substring(Nr.length - Drlen + 1);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter data bits: ");
String data = sc.next();
System.out.print("Enter generator bits: ");
String generator = sc.next();
int zeros = generator.length() - 1;
String newData = data + "0".repeat(zeros);
String CRC = divide(newData, generator);
String codeword = data + CRC;
System.out.println("\n----- Sender Side -----");
System.out.println("Original Data : " + data);
System.out.println("Generator : " + generator);
System.out.println("Appended Data : " + newData);
System.out.println("CRC : " + CRC);
System.out.println("Transmitted Data: " + codeword);
System.out.println("\n----- Receiver Side -----");
System.out.print("Enter received data: ");
String received = sc.next();
String remainder = divide(received, generator);
System.out.println("Remainder : " + remainder);
if (remainder.equals("0".repeat(zeros)))
System.out.println("No error detected.");
else
System.out.println("Error detected.");
sc.close();
}
}
No comments:
Post a Comment
Don't be a silent reader...
Leave your comments...
Anu