해밍 코드

From CS Wiki
Hamming Code

자기 정정 부호의 하나로 2bit의 오류 검출해서 1bit 오류를 수정할 수 있는 오류 검출 및 수정 부호

  • 오류의 검출은 물론 스스로 수정까지 하므로 자기 정정 부호라고도 지칭
  • 전송 비트 중 1, 2, 4, 8, 16, 32, 64, … , 2n 번째를 오류 검출을 위한 패리티 비트로 사용
    • ex) 원본 데이터: 1 0 0 1
    • ex) 검출 비트 추가: 1 0 1 1 0 0 1 1
  • 오류 검출 및 교정을 위한 잉여 비트가 많이 필요

구성[edit | edit source]

  • 전송 비트 = 정보 비트 + 패리티 비트

검출 과정[edit | edit source]

홀수 패리티 사용
  • 정보 비트: 111010101

패리티 비트 추가[edit | edit source]

  1. 자리 그리기 __O_OOO_OOOOOOO_
  2. 정보 비트 넣기 __1_110_10101
  3. 패리티 비트 계산#1: 0_1_110_10101
  4. 패리티 비트 계산#2: 001_110_10101
  5. 패리티 비트 계산#4: 0010110_10101
  6. 패리티 비트 계산#8: 0010110010101
  7. 패리티 비트 결과: 0010110010101

오류 검출[edit | edit source]

  • 정보 비트에 오류를 삽입 111000101 (5번째 자리 1 → 0)
  • 패리티 비트 검사
    • 각 패리티 비트를 한번 더 계산한다.
    • 홀수가 맞춰지도록 패리티가 삽입되었으므로, 정상이라면 패리티가 0이 되어야 함
    • #1: 0_1_110_00101 = 1
    • #2: 001_110_00101 = 0
    • #4: 0010110_00101 = 0
    • #8: 0010110000101 = 1
  • 각 값을 세로로(아래서 위로) 더해보면 1001 = 5 이다.
  • 즉, 5번째 값에 오류가 있으니 5번째 비트를 반전시킴으로써 에러를 수정할 수 있다.

해밍 거리[edit | edit source]

Hamming Distance

송신한 데이터와 수신한 데이터의 각 대응하는 비트가 서로 다른 비트의 수

같이 보기[edit | edit source]