CRC & Hamming Code
CRC & Hamming Code
Program :
// Include headers
#include<stdio.h>
#include<string.h>
#define N strlen(gen_poly)
char data[28];
// CRC value
char check_value[28];
// generator polynomial
char gen_poly[10];
// variables
int data_length,i,j;
void XOR(){
void receiver(){
scanf("%s", data);
printf("\n-----------------------------\n");
crc();
if(i<N-1)
printf("\nError detected\n\n");
else
void crc(){
// initializing check_value
for(i=0;i<N;i++)
check_value[i]=data[i];
do{
if(check_value[0]=='1')
XOR();
for(j=0;j<N-1;j++)
check_value[j]=check_value[j+1];
}while(i<=data_length+N-1);
int main()
scanf("%s",data);
scanf("%s",gen_poly);
data_length=strlen(data);
for(i=data_length;i<data_length+N-1;i++)
data[i]='0';
printf("\n----------------------------------------");
printf("\n----------------------------------------");
crc();
for(i=data_length;i<data_length+N-1;i++)
data[i]=check_value[i-data_length];
printf("\n----------------------------------------");
printf("\n----------------------------------------\n");
receiver();
return 0;
Output :
In case of error :
Write a program to implement Hamming code in C
Program:
#include<stdio.h>
void main() {
int data[10];
int dataatrec[10],c,c1,c2,c3,i;
scanf("%d",&data[0]);
scanf("%d",&data[1]);
scanf("%d",&data[2]);
scanf("%d",&data[4]);
data[6]=data[0]^data[2]^data[4];
data[5]=data[0]^data[1]^data[4];
data[3]=data[0]^data[1]^data[2];
for(i=0;i<7;i++)
printf("%d",data[i]);
scanf("%d",&dataatrec[i]);
c1=dataatrec[6]^dataatrec[4]^dataatrec[2]^dataatrec[0];
c2=dataatrec[5]^dataatrec[4]^dataatrec[1]^dataatrec[0];
c3=dataatrec[3]^dataatrec[2]^dataatrec[1]^dataatrec[0];
c=c3*4+c2*2+c1 ;
if(c==0) {
else {
for(i=0;i<7;i++)
printf("%d",data[i]);
for(i=0;i<7;i++)
printf("%d",dataatrec[i]);
if(dataatrec[7-c]==0)
dataatrec[7-c]=1;
else
dataatrec[7-c]=0;
for (i=0;i<7;i++) {
printf("%d",dataatrec[i]);
Output :