에러 정정 코드의 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주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니