[Computer Architecture]패리티 비트 & 해밍 코드

Legday_Dev·2024년 2월 24일

CS

목록 보기
5/13
post-thumbnail

Parity Bit(패리티 비트)

정보 전달 과정에서 오류가 생겼는지 검사하기 위해 전송하고자 하는 데이터의 각 문자에 1비트를 더하여 전송한다.

  • 패리티 비트는 2가지 종류(짝수, 혹수)로 나뉩니다.
  • 8Bit 의 데이터를 전송할 때 패리티 비트가 뒤에 붙는데 비트 값에 따라 짝수 패리티(Even Parity) 와 홀수 패리티(Odd Parity)로 나뉜다.
    • 단, 짝수 패리티라고 비트값이 0이고 홀수 패리티라서 값이 1인건 아니다
  • 실제 전송하고자 하는 비트들의 값중 1의 개수가 짝수면 짝수 패리티는 짝수를 유지하기 위해 0이 되고 홀수 패리티는 1의 갯수를 홀수로 맞추기 위해 1이 된다.
  • 짝수패리티는 1의 개수가 짝수가 되기 위해, 홀수 패리티는 1의 개수가 홀수가 되기 위해 비트값이 설정된다고 보면 된다.

사용하는 이유

  • 통신을 할 때 데이터는 비트를 한개씩 전송하는데 어떠한 요인으로 인해 비트의 값이 변조되거나 중간에 전송이 실패하는 경우가 있다.
  • 이때 송신측에서는 패리티비트를 이용하여 계산함으로써 데이터가 제대로 전송됐는지 확인할 수 있다.
  • 패리티 비트는 주로 시리얼 통신의 거리가 상당히 멀 경우에 주로 적용 된다.

해밍 코드(Hamming Code)

해밍코드는 데이터 전송 시 1비트의 에러를 정정할 수 있는 자가 오류정정 코드를 말한다.
패리티비트를 보고, 1 비트에 대한 오류를 수정할 수 있다.

  • 1비트는 오류 검출 및 정정이 가능하지만 2비트는 오류검출만 가능하고 정정이 불가능하다.
  • 전송하는 데이터비트에서 추가되는 패리티 비트의 수는 아래와 같다.
    • 2^p >= d + p + 1 (p 는 패리티 비트의 수, d 는 데이터 비트의 수)
  • 만약 데이터 비트의수가 4라면 2^p >= 5 +p 가 되므로 패리티 비트의 수는 최소 4개 이다.
  • 패리티 비트의 위치는 2^n(1,2,4,8,16...)에 위치한다.
  • 2^n 위치에 패리티 비트는 n번씩 건너뛰어 결정된다 !!

정보비트를 해밍코드로 변환 및 오류 검출

  • 정보비트 1011에 홀수 패리티 비트를 적용하여 해밍코드를 변환한다고 하자.
  • 우선 패리티 비트는 1,2,4,8.. 과 같이 2의n승에 위치에 오고 데이터 비트가 4개이므로 패리티 비트의 수는 최소 4개이다.
  • p p 1 p 0 1 1 로 변환된다(p는 패리티 비트)
  • 1 번째 패리티 비트는 p 1 0 1 의 홀수 패리티가 되야 하므로 1 이 된다.
  • 2 번째 패리티 비트트 p 1 1 1 의 홀수 패리티가 되야 하므로 0 이 왼다.
  • 3 번째 패리티 비트트 p 0 1 1 의 홀수 패리티가 되야 하므로 1 이 온다.
  • 즉, 1011 의 홀수패리티 해밍코드는 1 0 1 1 0 1 1 이 된다.

    만약 1011 의 해밍코드인 1011011통신중간에 오류로 인해 1111011 로 변하면 송신측에서는 아래와 같이 검사 및 수정할 수 있다.

    2^n 번째 패리티 비트를 역순으로 나열하여 수정할 부분을 도출해 낼 수 있다 !!

    • 첫번째 패리티 비트 : 1101 (정상) = 0
    • 두번쨰 패리티 비트 : 0111 (비정상) = 1
    • 세번째 패리티 비트 : 1011 (정상) = 0
    • 역순으로 010 해리티 비트를 10진수로 변환하면 2번째 자리에서 오류가 났음을 송신측에서 알 수 있다.

출처 1
출처 2
참고자료
참고동영상

profile
백엔드개발자

0개의 댓글