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

Popular posts from this blog

employee