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

소개글

프로젝트 해밍코드에 대한 보고서 자료입니다.

목차

없음

본문내용

0만 입력해서 바로 찾아가서 실행을 하게 됩니다.
4.설계
5.구현(프로그램)
#include
void generate(); //generate 변수선언
void test(); //test변수 선언
int main() //메인함수
{
int select = 0; //select라는 변수선언, 초기화
while ( 1 ) //while문()메뉴선택
{
fflush(stdin); //버퍼지워주는 함수
printf("4bit Hamming Code Generate & Test\n"); //출력
printf("당신이 원하는 것을 고르시오?\n"); //출력
printf("1. Generate\n"); //선택목록 출력
printf("2. Test\n"); //선택목록 출력
printf("3. Exit\n"); //선택목록 출력
scanf("%d", &select); //선택한 번호 %d에...
switch(select) //select 조건파악한 후
{
case (1): //1이면 generate
generate();
break;
case (2): //2이면 test
test();
break;
case (3): //3이면 exit
return 0;
default: //잘못된 입력시...
printf("잘못된 입력입니다!!\n"); //출력
break;
} // switch
} // while
}
void generate()
{
int mm[4], pp[3]; // material, parity
int i;
printf("Input 4 bit data.\n"); //출력
for ( i = 0 ; i < 4 ; i++ ) //for문()
{
fflush(stdin);
scanf("%d", &mm[i]); //4비트 입력받기
if ( mm[i] != 0 && mm[i] != 1 )
{
printf("You can enter only 0 and 1!!\n\n");
i--;
} //if
} // for
pp[0] = (mm[0]+mm[1]+mm[3])%2; //0,1,3번째 비트를 짝수로 만들어주기위해 더해서 나머지를 패리트0번에 입력
pp[1] = (mm[0]+mm[2]+mm[3])%2; //0,2,3번째 비트를 짝수로 만들어주기위해 더해서 나머지를 패리트1번에 입력
pp[2] = (mm[1]+mm[2]+mm[3])%2; //1,2,3번째 비트를 짝수로 만들어주기위해 더해서 나머지를 패리트2번에 입력
printf("Your code %d %d %d %d\n", mm[0], mm[1], mm[2], mm[3]);
printf(" became %d %d %d %d %d %d %d\n", pp[0], pp[1], mm[0], pp[2], mm[1], mm[2], mm[3]);
printf(" by Hamming Code\n\n");
}
void test()
{
int cc[7], ch[3], err; //code, check
int i;
printf("Input your 7 bit Hamming code.\n");
for ( i = 0 ; i < 7 ; i++ ) //for문(초기문;조건문 i < 7;증가문)
{
fflush(stdin);
scanf("%d", &cc[i]);
if ( cc[i] != 0 && cc[i] != 1 )
{
printf("You can enter only 0 and 1!!\n");;
i--;
} //if
} // for
ch[0] = (cc[0]+cc[2]+cc[4]+cc[6])%2; //0,2,4,6번째 비트를 짝수로 만들어주기위해 더해서 나머지를 패리트0번에 입력
ch[1] = (cc[1]+cc[2]+cc[5]+cc[6])%2; //1,2,5,6번째 비트를 짝수로 만들어주기위해 더해서 나머지를 패리트1번에 입력
ch[2] = (cc[3]+cc[4]+cc[5]+cc[6])%2; //3,4,5,6번째 비트를 짝수로 만들어주기위해 더해서 나머지를 패리트2번에 입력
if ( (err = ch[0] + ch[1]*2 + ch[2]*4 - 1) == -1)
{
printf("There's no error.\n");
printf("And the data is %d %d %d %d.\n\n", cc[2], cc[4], cc[5], cc[6]);
return;
}
if( cc[err] == 0 )
cc[err] = 1;
else
cc[err] = 0;
printf("There was an error. It was corrected to ");
printf("%d %d %d %d %d %d %d.\n", cc[0], cc[1], cc[2], cc[3], cc[4], cc[5], cc[6]);
printf("And the data is %d %d %d %d\n\n", cc[2], cc[4], cc[5], cc[6]);
}
6.결과
< 첫 번째 결과 >
< 두 번째 결과 >
7.결과에 대한 해석
- 첫 번째 그림 결과 해석 : 첫 번째 결과물은 임의의 비트(=1010)을 입력 하였을 때 해밍코드 부호화 하여(=짝수 페리티) 다음과 같은 비트 (=1011010) 을 얻을 수 있습니다.
비트 순서
1(20)
2(21)
3
4(22)
5
6
7
패리티 비트의 위치
1(P1)
0(P2)
1(P3)
정보비트의 위치
1(M1)
0(M2)
1(M3)
0(M4)
부호화된 비트
1
0
1
1
0
1
0
- 두 번째 그림 결과 해석 : 두 번째 결과물은 위의 첫 번째 그림의 결과가 일치하는지를 확인해 주는 일종의 검산에 관한 과정입니다. 해밍코드로 부호화된 7비트1011010 (=첫번째 결과물과 같은 비트)을 입력 시, 코드의 오류 유무와 해밍코드에 의해 부호화된 정보비트를 추출하여 출력하게 되며, 결과를 통해 첫 번째 그림과 해밍코드와 정보비트가 일치함을 알 수 있습니다.
(원래 저희 조가 하려던 인터럽트 처리과정은 저희가 각고에 노력을 해보았지만 현재의 프로그래밍 실력으론 많이 부족하여 결국 구현하지 못했습니다. 그래서 제출일이 다가와 피치 못하게 주제를 변경하게 되었습니다. 죄송합니다. 방학동안 프로그래밍 공부에 더욱 신경써서 공부하겠습니다. )
  • 가격1,100
  • 페이지수10페이지
  • 등록일2014.02.02
  • 저작시기2014.1
  • 파일형식한글(hwp)
  • 자료번호#903919
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니