1
1
// Contributed by - Anuj Das ( GC University, Silchar - @ Department of Computer Science )
2
2
3
- // 1. Simulate Cyclic Redundancy Check (CRC) Error Detection Algorithm for Noisy Channel.
3
+ // 1. Simulate and implement Cyclic Redundancy Check (CRC) Error Detection Algorithm for Noisy Channel.
4
4
5
5
import java .util .Scanner ;
6
6
@@ -10,7 +10,7 @@ public static String xorOperation(String modified_message, String polynomial) {
10
10
int size_in_bits = 16 ;
11
11
int shift = modified_message .length () - polynomial .length ();
12
12
while (shift >= 0 ) {
13
- modified_message = Integer .toBinaryString (Integer .parseInt (modified_message ,2 )^( Integer .parseInt (polynomial ,2 )<<shift ) );
13
+ modified_message = Integer .toBinaryString (Integer .parseInt (modified_message ,2 )^Integer .parseInt (polynomial ,2 )<<shift );
14
14
shift = modified_message .length () - polynomial .length ();
15
15
}
16
16
@@ -25,8 +25,8 @@ public static String xorOperation(String modified_message, String polynomial) {
25
25
26
26
// It generates the encoded data/message to be transmitted (i.e., by adding CRC Check Bits to the Original Message)
27
27
public static String generateCRC_CheckBits (String modified_message , String polynomial ) {
28
- String remainder = xorOperation (modified_message ,polynomial );
29
- remainder = remainder .substring (remainder .length () - modified_message .length ());
28
+ String remainder = xorOperation (modified_message ,polynomial ); // 16bits remainder
29
+ remainder = remainder .substring (remainder .length () - modified_message .length ()); // substring(int startIndex)
30
30
31
31
int CRC_CheckBits [] = new int [modified_message .length ()];
32
32
for (int i = 0 ; i < modified_message .length (); i ++) {
@@ -66,15 +66,19 @@ public static void main(String[] args) {
66
66
System .out .print ("Enter the CRC Generator(Polynomial): " ); // CRC Generator
67
67
String polynomial = sc .next (); // Test --> 1001
68
68
69
+ // Sender's end
69
70
String modified_message = modifyMessage (message ,polynomial );
70
71
System .out .println ("Modified Data(Message): " + modified_message );
71
72
72
73
String msgToBeTransmitted = generateCRC_CheckBits (modified_message , polynomial );
73
74
System .out .println ("\n Data(Message) is ready to be Transmitted: " + msgToBeTransmitted );
74
75
76
+ // Noisy Transmission Channel
75
77
String send_data = noisyChannel (msgToBeTransmitted );
76
78
System .out .println ("Data(Message) Transmitted through Noisy Channel: " +send_data );
77
79
80
+
81
+ // Receiver's end
78
82
String checkAllZeroes = xorOperation (send_data ,polynomial );
79
83
80
84
// It checks if the remainder contains only zeroes --> If it contains only zeros then the data/message is accepted else considered as error in Transmission
0 commit comments