에러 정정 코드의 C소스 구현
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

에러 정정 코드의 C소스 구현에 대한 보고서 자료입니다.

본문내용

==================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

키워드

  • 가격1,200
  • 페이지수10페이지
  • 등록일2005.11.24
  • 저작시기2005.11
  • 파일형식한글(hwp)
  • 자료번호#322593
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니