패리티 비트와 해밍 코드

패리티 비트와 해밍 코드

패리티 비트와 해밍 비트의 개념과 간단한 사용법을 알아봅니다.


패리티 비트

비트 1 의 개수를 맞춤으로써, 오류를 검출한다.

  • 짝수 패리티 비트, 홀수 패리티 비트가 있습니다.
  • 짝수 기준으로 설명하겠습니다.
  • 만약 전송하고 싶은 데이터가 1011 이라면, 현재 1의 개수는 3개 입니다.
    • 리틀 앤디안 기준으로 가장 우측에 비트 1을 더 붙여줍니다.
    • 10111 이 됩니다.
    • 만약 짝수 패리티 비트 에서 10110이 온다면, 오류가 났음을 알게됩니다.

패리티 비트의 한계

  • 오류가 발생했음만 식별할 수 있고, 수정할 수 없습니다.
  • 오류 비트가 짝수개가 발생한경우에는 검출 할 수 없습니다.
    • 10111 이 정상적인 비트 일때 맨 앞, 맨 뒤 비트 두개에 문제가 생긴다면
      • 00110이 됩니다.
      • 1의 비트수가 여전히 짝수개 이므로 오류가 낫음을 찾지 못하게 됩니다.

해밍 코드

패리티 비트를 이용하여 오류검출과 동시에 수정까지 할 수 있게 됩니다.

  • 2^n 위치에 패리티 비트를 심어주어줍니다.
  • 이 비트부터 시작하는 데이터 비트들이 정상인지를 확인합니다.

오류 검출 & 수정 과정

  • 짝수로 확인할때 1101100 라는 데이터가 왔다고 합니다.
  • 역시나 리틀 앤디안으로 우측에서 좌측 순으로 읽습니다.
  • 이때 패리티 비트는 2^n 1번째, 2번째, 4번째 가 됩니다.
    • P1(패리티 비트1) 범위를 체크하면
    • P1 D1 D2 D3 를 확인하게 되고, 우측부터 셋을때 1번째 3번째 5번째 7번째 비트를 확인하게 됩니다.
      • 1010 으로 1이 짝수개이므로 에러가 없다고 판단하고 0으로 합니다.
    • P2의 경우 1110 이므로 홀수이므로 에러가 있다고 판단하고 1으로 합니다.
    • P3의 경우 1101 이므로 1로 합니다.
  • 110을 10진수로 바꾸면 6이고 6번째 비트에 문제가 있다고 판단합니다.
    • 1001100 이 올바른 비트 입니다.

장점

  • 클라이언트 측에서 서버에게 재전송 요청을 보내지 않아도 됩니다.
    • 우주, 지구처럼 먼거리의 경우, 재전송 요청, 수신 자체가 굉장한 낭비입니다.

단점

  • 필요 비트의 개수가 많아 집니다.

Reference

  • 리틀 앤디안
  • https://gyoogle.dev/blog/computer-science/computer-architecture/%ED%8C%A8%EB%A6%AC%ED%8B%B0%20%EB%B9%84%ED%8A%B8%20&%20%ED%95%B4%EB%B0%8D%20%EC%BD%94%EB%93%9C.html
  • https://m.blog.naver.com/ggggamang/221113176831