해밍 코드로 단일 비트 오류 위치를 찾는 원리

해밍 코드의 패리티 비트 배치와 오류 위치 계산 방식을 통해 단일 비트 오류를 검출·정정하는 과정을 정리한다.

2026-08-14 · 최초 발행 2025-08-10

패리티 검사만으로는 부족한 이유

1950년대 Bell 연구소의 Richard Hamming이 개발한 Hamming Code는 오류 발생 여부뿐 아니라 단일 비트 오류가 생긴 위치까지 찾아 수정하는 오류 검출 및 정정 코드다. 선형 부호 방식을 따르며, 여러 패리티 비트를 조합해 수신 측이 오류 비트를 직접 판별하도록 만든다.

단순 패리티 체크가 오류 유무 확인에 머문다면, 해밍 코드는 각 검사 결과를 위치 정보로 사용한다. 이 차이 때문에 단일 비트 반전이 문제가 되는 전송·저장 경로에서 정정까지 수행할 수 있다.

데이터 길이에 맞춰 패리티 비트 배치하기

필요한 패리티 비트 수 p는 데이터 비트 수 n에 대해 다음 조건을 만족해야 한다.

2^p ≥ n + p + 1

여기서 p는 패리티 비트 수이고 n은 데이터 비트 수다. 4비트 데이터(n=4)를 전송하는 경우에는 2^3 ≥ 4 + 3 + 1, 즉 8 ≥ 8이므로 패리티 비트 3개가 필요하다.

패리티 비트는 1, 2, 4, 8, 16처럼 2의 거듭제곱 위치에 놓고, 나머지 위치를 데이터 비트에 할당한다. 데이터 d1, d2, d3, d4와 패리티 비트 p1, p2, p3의 배치는 다음과 같다.

비트 위치: 1  2  3  4  5  6  7
비트 종류: p1 p2 d1 p3 d2 d3 d4

이진수 위치값으로 검사 범위를 나누는 방식

각 패리티 비트는 비트 위치를 이진수로 표현했을 때 특정 자리가 1인 위치를 검사한다. p1은 위치 1, 3, 5, 7, 9, 11, ...처럼 최하위 비트가 1인 위치를 담당한다. p2는 위치 2, 3, 6, 7, 10, 11, ...을, p3는 위치 4, 5, 6, 7, 12, 13, ...을 검사한다. 위치 8의 p4는 8, 9, 10, 11, 12, 13, 14, 15, ...을 담당한다.

Even Parity를 사용할 때는 각 검사 집합에 포함된 1의 개수가 패리티 비트를 포함해 짝수가 되도록 값을 정한다. 데이터 비트를 배치한 뒤 각 패리티 비트의 검사 위치를 정하고 값을 계산하면 전송할 해밍 코드가 완성된다.

데이터 1011을 인코딩하고 오류를 고치는 과정

데이터 비트 수는 n = 4이고 패리티 비트 수는 p = 3이다. 위치 3에는 d1 (1), 위치 5에는 d2 (0), 위치 6에는 d3 (1), 위치 7에는 d4 (1)을 둔다.

p1은 위치 1, 3, 5, 7을 검사한다. 값이 ?, 1, 0, 1이므로 1의 개수를 짝수로 맞추기 위해 p1 = 0이 된다. p2는 위치 2, 3, 6, 7의 ?, 1, 1, 1을 검사하므로 p2 = 1이다. p3는 위치 4, 5, 6, 7의 ?, 0, 1, 1을 검사해 p3 = 0이 된다.

따라서 완성된 Hamming Code는 0110011이다.

전송 도중 위치 5의 비트가 0에서 1로 변경되었다고 가정하면 수신 코드는 0110111이 된다. 위치 1, 3, 5, 7을 검사한 p1 결과는 0, 1, 1, 1로 1의 개수가 홀수여서 오류를 가리킨다. p2 검사 대상인 위치 2, 3, 6, 7의 값 1, 1, 1, 1은 짝수이므로 정상이다. p3의 위치 4, 5, 6, 7은 0, 1, 1, 1로 홀수여서 오류가 난다.

검사 결과는 p1 오류 (1), p2 정상 (0), p3 오류 (4)이므로 1 + 0 + 4 = 5가 된다. 수신 측은 위치 5를 오류 비트로 판별하고 1에서 0으로 반전해 0110011을 복원한다.

정정 범위와 더 강한 부호를 선택할 때

해밍 코드는 하나의 비트 오류를 검출하고 정정할 수 있다. 추가 패리티 비트를 사용하면 두 개의 비트 오류를 검출할 수 있지만 정정은 불가하다. 데이터 비트 수가 증가할수록 필요한 패리티 비트의 비율이 감소하는 점도 특징이다.

반면 두 개 이상 비트에 오류가 생기면 정확한 정정이 불가능할 수 있다. 작은 데이터 패킷에서는 패리티 비트 오버헤드도 상대적으로 커진다. 다중 비트 오류 처리가 필요한 환경이라면 Reed-Solomon, BCH, LDPC 같은 더 강력한 오류 정정 코드를 검토해야 한다.

통신과 시스템의 무결성 경로

위성 통신은 잡음이 많은 채널에서 데이터 무결성을 유지하는 데 활용할 수 있고, 모바일 네트워크에서는 데이터 패킷의 오류 검출 및 정정에 쓰인다. 디지털 방송에서도 신호 왜곡에 대한 보호 수단이 된다.

컴퓨터 시스템에서는 ECC(Error-Correcting Code) 메모리가 비트 반전 오류 정정에 Hamming Code를 활용한다. 하드 디스크와 SSD의 데이터 무결성, 캐시 메모리의 중요 데이터 보호도 같은 문제 영역에 속한다. 항공 우주의 중요 제어 시스템, 의료 기기의 생명 유지 장치, 자동차 전자 제어 장치처럼 오류 방지가 필요한 산업 제어 환경도 적용 대상이다.

YesNo데이터 생성Hamming Code 인코딩전송수신패리티 검사오류 검출?오류 위치 계산오류 정정원본 데이터 복원

해밍 코드는 단일 비트 오류가 주로 발생하는 경로에서 데이터 무결성을 다루는 기본적인 정정 메커니즘이다. 대용량 데이터와 높은 신뢰성이 필요한 환경에서는 더 강한 오류 정정 코드가 사용되지만, 패리티 비트 배치와 위치 계산이라는 해밍 코드의 원리는 디지털 통신과 저장 시스템을 이해하는 출발점으로 남아 있다.

해밍 코드오류 정정패리티 비트ECC디지털 통신