패리티 비트 & 해밍 코드

이유석·2022년 1월 5일
0

패리티 비트

  • 정보 전달 과정에서 오류가 생겼는 지 검사하기 취해 추가하는 비트를 말한다.

  • 전송하고자 하는 데이터의 각 문자에 1비트를 더하여 전송한다.

  • 종류 : 짝수 패리티, 홀수 패리티
    - 짝수 패리티 : 데이터의 모든 1의 개수를 짝수로 맞춰야 한다.
    - 홀수 패리티 : 데이터의 모든 1의 개수를 홀수로 맞춰야 한다.

  • 패리티 비트 특징
    2bit의 데이터가 손실되면 알아차릴 수 없다.
    오류 검출만 할 뿐 수정하지는 않는다. (해밍 코드를 활용)

해밍 코드

  • 데이터 전송 시 1bit의 오류를 정정할 수 있는 자기 오류정정 코드를 말한다.

  • 최대 2비트 오류를 감지할 수 있다.

  • 패리티 비트를 보고, 1비트에 대한 오류를 정정할 곳을 찾아 수정할 수 있다.

  • 방법
    2의 n승 번째 자리인 1,2,4번째 자릿수가 패리티 비트.
    이 숫자로부터 시작하는 세개의 패리티 비트가 짝수인지, 홀수인지 기준으로 판별한다.

  • 예시
    원본 데이터 1001에 대해 해밍 코드를 만들어 보자.

    1) 몇개의 패리티 비트를 추가해야할지 계산한다.


    가장 적절한 P(패리티 비트 개수)의 값은 3 이다.

    2) 패리티 비트 자리를 추가해서 새로운 데이터를 만든다.

    공식을 통해 패리티 범위를 구한다.

    이 예제에서는 짝수 패리티로 해밍 코드를 만든다.

    따라서 원본 데이터 1001에 대한 해밍코드는 1001100이 된다.

    검사 및 수정
    단일 비트 오류가 발생해서 1011100을 수신했다고 가정 한다.
    수신측은 이 통신이 짝수 해밍코드를 사용한 통신임을 미리 알고 있기 때문에 어떤 비트가 패리티비트인지 알고 있다.

    그리고 그 패리티비트가 어떤 범위에 대한 짝수 패리티인지도 알고 있기 때문에 순서대로 패리티비트의 유효성을 검사하는 것으로 오류를 수정할 수 있다.

    첫번째 비트부터 검사한다.

    첫번째 패리티 범위에 대한 짝수 패리티는 1이기 때문에 1을 기록하고 넘어간다.

    두번째 패리티 범위에 대한 짝수 패리티는 0이기 때문에 0을 기록하고 넘어간다.

    세번째 패리티 범위에 대한 짝수 패리티는 1이기 때문에 1을 기록한다.
    결국 E(오류 비트) 는 5임을 구할 수 있다.

    5번 비트를 0으로 바꿔서 1001100 즉, 원래 보내고자 했던 데이터를 얻을 수 있고, 해밍코드를 만들기 위해 추가한 (1,2,4) 번째 비트를 제거하고 1001이라는 원래 메시지를 얻을 수 있다.

profile
https://github.com/yuseogi0218

0개의 댓글