기출 해밍 코드 hamming code

agnusdei·2024년 11월 19일
0

Network

목록 보기
22/419

해밍 코드 (Hamming Code) 설명 및 에러 정정 예시

1. 해밍 코드의 목적

해밍 코드(Hamming Code)는 오류 정정 코드로, 정보 전송 중 발생할 수 있는 단일 비트 오류검출하고 수정할 수 있도록 고안된 코드입니다. 1950년대 클리포드 해밍(Clifford C. Hamming) 교수에 의해 개발되었으며, 주로 데이터 통신저장 장치에서 사용됩니다. 해밍 코드는 송신자가 전송하는 데이터의 무결성을 유지하고, 수신자가 오류를 검출하여 원본 데이터를 복원할 수 있도록 돕습니다.

2. 해밍 코드의 원리

해밍 코드의 핵심은 패리티 비트(parity bit)를 사용하는 것입니다. 패리티 비트는 데이터의 비트들을 XOR 연산하여 설정되며, 이를 통해 발생할 수 있는 1비트 오류를 감지하고 수정할 수 있습니다.

  • 패리티 비트: 각 패리티 비트는 데이터 비트들과 XOR 연산을 통해 설정됩니다.
  • XOR 연산: 두 비트가 같으면 0, 다르면 1을 반환하는 논리 연산입니다.

해밍 코드에서는 2^k - 1 비트의 코드에서 k 개의 패리티 비트를 추가하여 오류를 수정합니다. 예를 들어, 7비트 해밍 코드에서는 4개의 데이터 비트와 3개의 패리티 비트가 있습니다.

3. 해밍 코드의 구조

해밍 코드에서 전송되는 데이터는 패리티 비트데이터 비트를 결합한 형태입니다. 패리티 비트는 2의 거듭제곱 위치에 배치되고, 나머지 위치에는 데이터 비트가 배치됩니다.

예를 들어, 4개의 데이터 비트(D1, D2, D3, D4)를 전송하려면 7비트 해밍 코드에서는 3개의 패리티 비트(P1, P2, P4)가 추가됩니다.

위치P1P2D1P4D2D3D4
P1P21P4011
  • P1: 1, 2, 4번 비트에 영향을 미침
  • P2: 1, 3, 4번 비트에 영향을 미침
  • P4: 2, 3, 4번 비트에 영향을 미침

4. 해밍 코드의 패리티 비트 계산

패리티 비트는 XOR 연산을 사용하여 계산됩니다.

4.1. P1 계산:

P1은 D1, D2, D4와 관련이 있습니다.

P1 계산:
P1 = D1 ⊕ D2 ⊕ D4
예시:
P1 = 1 ⊕ 0 ⊕ 1 = 0

따라서 P1 = 0이 됩니다.

4.2. P2 계산:

P2는 D1, D3, D4와 관련이 있습니다.

P2 계산:
P2 = D1 ⊕ D3 ⊕ D4
예시:
P2 = 1 ⊕ 1 ⊕ 1 = 1

따라서 P2 = 1이 됩니다.

4.3. P4 계산:

P4는 D2, D3, D4와 관련이 있습니다.

P4 계산:
P4 = D2 ⊕ D3 ⊕ D4
예시:
P4 = 0 ⊕ 1 ⊕ 1 = 0

따라서 P4 = 0이 됩니다.

5. 해밍 코드의 전송

위에서 계산된 패리티 비트 P1 = 0, P2 = 1, P4 = 0과 데이터 비트 D1 = 1, D2 = 0, D3 = 1, D4 = 1을 결합하면 전송되는 해밍 코드는 다음과 같습니다:

전송된 해밍 코드: 0 1 1 0 0 1 1

6. 수신 후 오류 검출 및 수정

이제 수신된 데이터에서 오류를 검출하고 수정하는 방법을 설명하겠습니다.

6.1. 수신된 데이터

가정하에, 수신된 데이터에서 오류가 발생했다고 가정해봅시다. 예를 들어, 수신된 데이터가 0 1 1 1 0 1 1인 경우 (P4에 오류가 발생했다고 가정):

수신된 해밍 코드: 0 1 1 1 0 1 1
6.2. 패리티 비트 재계산

수신된 데이터에서 패리티 비트를 다시 계산하여 오류를 확인합니다.

  1. P1 재계산:
    P1' = D1 ⊕ D2 ⊕ D4
    P1' = 1 ⊕ 0 ⊕ 1 = 0
    수신된 P1의 값은 0이므로 정상입니다.

  2. P2 재계산:
    P2' = D1 ⊕ D3 ⊕ D4
    P2' = 1 ⊕ 1 ⊕ 1 = 1
    수신된 P2의 값은 1이므로 정상입니다.

  3. P4 재계산:
    P4' = D2 ⊕ D3 ⊕ D4
    P4' = 0 ⊕ 1 ⊕ 1 = 0
    수신된 P4의 값은 1이므로 오류가 발생했음을 확인할 수 있습니다.

6.3. 오류 위치 계산

수신된 데이터에서 패리티 비트를 재계산하고, 오류 위치를 계산합니다. 오류 위치는 다음과 같이 계산됩니다.

오류 위치 = P1' + 2 × P2' + 4 × P4'
P1' = 0, P2' = 1, P4' = 1

오류 위치 = 0 + 2 × 1 + 4 × 1 = 6

따라서 오류 위치는 6번 비트입니다.

6.4. 오류 수정

수신자는 오류 위치를 알고 있으므로 해당 비트를 수정합니다. 6번 비트는 D3에 해당하며, 수신된 값은 1이고 이를 0으로 수정하여 원본 데이터를 복원합니다.

수정된 데이터: 1011

7. 해밍 코드의 장점과 한계

7.1. 장점

  • 단일 비트 오류 수정 가능: 해밍 코드는 단일 비트 오류를 검출하고 수정할 수 있는 능력이 있습니다.
  • 간단한 계산: XOR 연산만으로 패리티 비트를 계산할 수 있어 효율적이고 빠릅니다.
  • 실시간 시스템에서 유용: 실시간 데이터 전송에서 오류를 빠르게 수정할 수 있어 신뢰성 있는 통신을 제공합니다.

7.2. 한계

  • 2비트 이상의 오류 검출 가능하나 수정 불가: 해밍 코드는 단일 비트 오류만 수정할 수 있으며, 2비트 이상의 오류는 검출할 수 있지만 수정할 수 없습니다.
  • 다수의 오류 발생 시 전체 데이터 손상 가능: 여러 비트에 오류가 발생하면 코드의 유효성을 잃게 됩니다.

8. 결론

해밍 코드는 단일 비트 오류를 수정할 수 있는 강력한 오류 정정 코드입니다. 패리티 비트를 사용하여 간단한 수학적 계산으로 오류를 검출하고 수정할 수 있으며, 데이터 전송의 신뢰성을 높이는 데 중요한 역할을 합니다.


0개의 댓글