Hamming Code - Generation

#include<stdio.h>
#include<math.h>

int main(){
int arr[255],temp[255], bit_len, parity_len, i, j, bit, xor, ls;

printf("Enter the number of bits : ");
scanf("%d",&bit_len);

printf("Enter the bits : \n");
for(i=0 ; i < bit_len ; i++){
scanf("%d",&arr[i]);
}

// 2^r >= n + r + 1 // 1 0 1 1 ,
for(parity_len=0 ; pow(2,parity_len) < bit_len + parity_len + 1 ; parity_len++);
printf(" Parity len = %d\n", parity_len);

for( i=1 , bit=0, j = bit_len - 1 ; i <= bit_len + parity_len ; i++ ){
if(i == pow(2,bit)){
temp[i-1] = 0;
bit++;
}else{
temp[i-1] = arr[j--];
}
}



printf(" [ ");
for(i = bit_len + parity_len -1 ; i >= 0 ; i--){
printf(" %d ",temp[i]);
}
printf(" ] \n");

for(bit = 0 ; bit < parity_len ; bit++){
xor = -1;

for (int j = parity_len + bit_len; j >= 1; j--)
{
ls = j & 1 << bit;
if (ls && j != pow(2, bit))
{
if (xor == -1)
{
xor = temp[j-1];
}else{
xor = xor ^ temp[j-1];
}
}else if (j == pow(2, bit))
{
temp[j-1] = xor;
}
}
}

printf(" [ ");
for(i = bit_len + parity_len -1 ; i >= 0 ; i--){
printf(" %d ",temp[i]);
}
printf(" ] \n");

return 0;
} Output : Enter the number of bits : 7 Enter the bits : 1 0 0 1 1 0 1 Parity len = 4 [ 1 0 0 0 1 1 0 0 1 0 0 ] [ 1 0 0 1 1 1 0 0 1 0 1 ] Explanation :



Comments