Hamming reciver
#include <stdio.h>
#include <math.h>
int main() {
int receivedCode[12], receivedCheckBits[4], errorPosition = 0, i, j, n = 0, count = 12; // Assuming a fixed 12-bit received code
printf("Enter received Hamming code (12 bits): ");
for (i = 0; i < count; i++) {
scanf("%d", &receivedCode[i]);
}
printf("Received Hamming code: ");
for (j = 0; j < count; j++) {
printf("%d ", receivedCode[j]);
}
// Calculating received check bits
receivedCheckBits[0] = receivedCode[0] ^ receivedCode[1] ^ receivedCode[3] ^ receivedCode[4] ^ receivedCode[6];
receivedCheckBits[1] = receivedCode[0] ^ receivedCode[2] ^ receivedCode[3] ^ receivedCode[5] ^ receivedCode[6];
receivedCheckBits[2] = receivedCode[1] ^ receivedCode[2] ^ receivedCode[3] ^ receivedCode[7];
receivedCheckBits[3] = receivedCode[4] ^ receivedCode[5] ^ receivedCode[6] ^ receivedCode[7];
// Checking for errors in the received code
for (i = 0; i < 4; i++) {
if (receivedCheckBits[i] != 0) {
errorPosition += pow(2, i);
}
}
if (errorPosition != 0) {
printf("\nError detected at position: %d", errorPosition);
// Correcting the error if possible
if (receivedCode[errorPosition - 1] == 0) {
receivedCode[errorPosition - 1] = 1;
} else {
receivedCode[errorPosition - 1] = 0;
}
printf("\nCorrected Hamming code: ");
for (j = 0; j < count; j++) {
printf("%d ", receivedCode[j]);
}
} else {
printf("\nNo errors detected. Received code is correct.");
}
return 0;
}
//hamming receiver
Comments
Post a Comment