목차
없음
본문내용
================crc_16========================
for(i=0;i
Crc_data[i]=crc_16[0];
//data 뒤2-byte를 crc_16[0],[1]으로 채움
Crc_data[i+1]=crc_16[1];
for(i=0;i
//data_size*8만큼 연산(bit_size)
{
if((int)Crc_data[0]>=128)
//data의 맨 앞bit가 1인지 판단
{
for(j=0;j
//data를 byte단위로 1bit씩 shift
{
if((int)Crc_data[j+1]>=128)Crc_data[j]=(Crc_data[j]<<1)|0x01;
//1로 채움
else Crc_data[j]=(Crc_data[j]<<1)&0xfe; //0으로 채움
}
Crc_data[0]=Crc_data[0]^crc[0]; //crc 연산
Crc_data[1]=Crc_data[1]^crc[1]; //crc 연산
}
else //data의 맨 앞bit가 0이면
{
for(j=0;j
//data를 byte단위로 1bit씩 shift
{
if((int)Crc_data[j+1]>=128)Crc_data[j]=(Crc_data[j]<<1)|0x01;
else Crc_data[j]=(Crc_data[j]<<1)&0xfe;
}
}
}
crc_16[2]=Crc_data[0];//crc_16 결과 저장
crc_16[3]=Crc_data[1];//crc_16 결과 저장
//=====================crc_2========================
for(i=0;i
//crc_data로 errer_data이동
Crc_data[i]=crc_2[0];
//data 뒤2-byte를 crc_2[0],0x00으로 채움
Crc_data[i+1]=0x00;
for(i=0;i
{
if((int)Crc_data[0]>=128)
//data의 맨 앞bit가 1인지 판단
{
for(j=0;j
//data를 byte단위로 1bit씩 shift
{
if((int)Crc_data[j+1]>=128)Crc_data[j]=(Crc_data[j]<<1)|0x01;
//1로 채움
else Crc_data[j]=(Crc_data[j]<<1)&0xfe; //0으로 채움
}
Crc_data[0]=Crc_data[0]^crc[2];//crc 연산
}
else //data의 맨 앞bit가 0이면
{
for(j=0;j
{
if((int)Crc_data[j+1]>=128)Crc_data[j]=(Crc_data[j]<<1)|0x01;
else Crc_data[j]=(Crc_data[j]<<1)&0xfe;
}
}
}
crc_2[1]=Crc_data[0]; //crc_2 결과 저장
//================parity bit check==================
for(i=0;i
for(i=0;i
for(i=0;i
check_bit=0x00;
for(j=0;j<8;j++)
check_bit+=((enc[i]>>j)&0x01);
if((check_bit%2)==1){ //error검사
dec[i]=(enc[i]);
dec[i]=dec[i]>>1;
}
else
{
dec[i]='X'; //error 발견된 곳에 'X'치환
parity_num[0]=parity_num[0]+1;
}
}
//======================print=======================
printf("\n===== input data =====\n");
//input data를 비트단위로 출력
for(i=0;i
{
if((int)sentence[i/8]>=128)printf("1");
else printf("0");
sentence[i/8]=sentence[i/8]<<1;
}
printf("\n===== error data =====\n");
//error data를 비트단위로 출력
for(i=0;i
{
if((int)Error_data[i/8]>=128)printf("1");
else printf("0");
Error_data[i/8]=Error_data[i/8]<<1;
}
printf("\n===== crc-16 =====\n"); //crc-16
if((int)crc_16[2]==0)
{
if((int)crc_16[3]==0)printf("No error \n");
else printf("error2 \n");
}
else printf("error1 \n"); //error발견시 error1 출력
printf("\n ===== crc-2 =====\n");
if((int)crc_2[1]==0)printf("No error \n"); //crc-2
else printf("error \n"); //error발견시 error 출력
printf("\n===== parity bit =====\n");
for(i=0;i
printf("\n");
printf("\n전체 에러 %d byte중 %d byte 에러 발견\n",parity_number, parity_num[0]);
}
float Uniform()
{
float rv;
rv=(float)rand()/(float)RAND_MAX;
return rv;
}
결과 1
결과 2
for(i=0;i
//data 뒤2-byte를 crc_16[0],[1]으로 채움
Crc_data[i+1]=crc_16[1];
for(i=0;i
{
if((int)Crc_data[0]>=128)
//data의 맨 앞bit가 1인지 판단
{
for(j=0;j
{
if((int)Crc_data[j+1]>=128)Crc_data[j]=(Crc_data[j]<<1)|0x01;
//1로 채움
else Crc_data[j]=(Crc_data[j]<<1)&0xfe; //0으로 채움
}
Crc_data[0]=Crc_data[0]^crc[0]; //crc 연산
Crc_data[1]=Crc_data[1]^crc[1]; //crc 연산
}
else //data의 맨 앞bit가 0이면
{
for(j=0;j
{
if((int)Crc_data[j+1]>=128)Crc_data[j]=(Crc_data[j]<<1)|0x01;
else Crc_data[j]=(Crc_data[j]<<1)&0xfe;
}
}
}
crc_16[2]=Crc_data[0];//crc_16 결과 저장
crc_16[3]=Crc_data[1];//crc_16 결과 저장
//=====================crc_2========================
for(i=0;i
Crc_data[i]=crc_2[0];
//data 뒤2-byte를 crc_2[0],0x00으로 채움
Crc_data[i+1]=0x00;
for(i=0;i
if((int)Crc_data[0]>=128)
//data의 맨 앞bit가 1인지 판단
{
for(j=0;j
{
if((int)Crc_data[j+1]>=128)Crc_data[j]=(Crc_data[j]<<1)|0x01;
//1로 채움
else Crc_data[j]=(Crc_data[j]<<1)&0xfe; //0으로 채움
}
Crc_data[0]=Crc_data[0]^crc[2];//crc 연산
}
else //data의 맨 앞bit가 0이면
{
for(j=0;j
if((int)Crc_data[j+1]>=128)Crc_data[j]=(Crc_data[j]<<1)|0x01;
else Crc_data[j]=(Crc_data[j]<<1)&0xfe;
}
}
}
crc_2[1]=Crc_data[0]; //crc_2 결과 저장
//================parity bit check==================
for(i=0;i
for(j=0;j<8;j++)
check_bit+=((enc[i]>>j)&0x01);
if((check_bit%2)==1){ //error검사
dec[i]=(enc[i]);
dec[i]=dec[i]>>1;
}
else
{
dec[i]='X'; //error 발견된 곳에 'X'치환
parity_num[0]=parity_num[0]+1;
}
}
//======================print=======================
printf("\n===== input data =====\n");
//input data를 비트단위로 출력
for(i=0;i
if((int)sentence[i/8]>=128)printf("1");
else printf("0");
sentence[i/8]=sentence[i/8]<<1;
}
printf("\n===== error data =====\n");
//error data를 비트단위로 출력
for(i=0;i
if((int)Error_data[i/8]>=128)printf("1");
else printf("0");
Error_data[i/8]=Error_data[i/8]<<1;
}
printf("\n===== crc-16 =====\n"); //crc-16
if((int)crc_16[2]==0)
{
if((int)crc_16[3]==0)printf("No error \n");
else printf("error2 \n");
}
else printf("error1 \n"); //error발견시 error1 출력
printf("\n ===== crc-2 =====\n");
if((int)crc_2[1]==0)printf("No error \n"); //crc-2
else printf("error \n"); //error발견시 error 출력
printf("\n===== parity bit =====\n");
for(i=0;i
printf("\n전체 에러 %d byte중 %d byte 에러 발견\n",parity_number, parity_num[0]);
}
float Uniform()
{
float rv;
rv=(float)rand()/(float)RAND_MAX;
return rv;
}
결과 1
결과 2
소개글