💡 핵심 인사이트
해밍 코드(Hamming Code)는 단순히 에러가 났다고 삐삐를 치는(검출) 것을 넘어, 도착한 데이터에서 '정확히 몇 번째 비트가 깨졌는지' 그 위치를 역추적하여 스스로 고쳐내는 전진 오류 수정(FEC, 순방향 수정)의 가장 클래식한 기법입니다.
원리는 벤 다이어그램의 겹치는 영역을 이용한 여러 개의 '패리티 비트 조합'에 있습니다.
Ⅰ. 해밍 거리 (Hamming Distance)의 개념
에러를 수정하려면 먼저 '단어 사이의 거리'를 알아야 합니다.
- 해밍 거리: 두 개의 2진수 데이터가 있을 때, 서로 값이 다른 비트의 개수입니다.
000과011을 비교하면? 2번째와 3번째 비트가 다르므로 해밍 거리는 2입니다.
- 에러 수정의 법칙: 어떤 시스템에서 에러를 1개 발견(검출)하려면 유효한 단어들 사이의 최소 해밍 거리가 2여야 하고, 에러를 1개 직접 고치려면(교정) 최소 해밍 거리가 3이어야 한다는 수학적 법칙이 있습니다. (정보처리기사 단골 문제).
Ⅱ. 해밍 코드의 구조와 원리 (벤 다이어그램)
해밍 코드는 4비트의 진짜 데이터(1011)를 보내기 위해, 무려 3비트의 쓰레기 힌트(패리티 비트 $P_1, P_2, P_3$)를 섞어서 총 7비트를 보냅니다. 이를 (7, 4) 해밍 코드라고 부릅니다.
힌트(패리티) 심는 자리의 규칙
패리티 비트들은 아무 데나 끼어들지 않고, 반드시 **$2^n$ 번째 자리(1번, 2번, 4번, 8번...)**에만 배치됩니다.
- 1번째, 2번째, 4번째 칸: 힌트를 적는 종이(패리티)
- 3번째, 5번째, 6번째, 7번째 칸: 진짜 데이터를 적는 공간.
교차 검증 (에러 위치 찾기)
이 3개의 패리티 비트들은 자기가 담당하는 번호 구역이 서로 미세하게 겹쳐(교집합) 있습니다. 수신기가 데이터를 받고 짝수 패리티 룰에 맞춰 검사(증후군 연산, Syndrome)를 3번 돌립니다.
- $P_1$ 영역 검사: "어? 에러 났어!" (1)
- $P_2$ 영역 검사: "어? 여기도 에러 났어!" (1)
- $P_3$ 영역 검사: "여긴 정상이야." (0)
결과로
011(십진수로 3)이라는 신호가 나옵니다. 이 숫자의 의미는 기가 막힙니다. "아하, 1번과 2번이 겹치는 구역인 '3번째 비트'가 번개 맞고 깨졌구나!" 수신기는 송신기에 다시 보내달라고 하지 않고, 그 3번째 비트의 값을 스스로 반대로 뒤집어(1➔0) 완벽히 복원해 냅니다.
Ⅲ. 해밍 코드의 한계
- 1비트 수정, 2비트 검출의 룰: 해밍 코드는 1비트가 깨지면 그 위치를 귀신같이 찾아 고치지만, 재수 없게 2비트가 동시에 깨져버리면 엉뚱한 비트가 깨진 것으로 착각(오진)하여 멀쩡한 비트를 뒤집어버리는 치명적 약점이 있습니다.
- 그래서 네트워크 데이터 전송보다는 컴퓨터 내부의 **메모리(RAM) 에러 보정용(ECC 메모리)**으로 주로 쓰입니다.
📢 섹션 요약 비유: 해밍 코드는 거짓말쟁이를 잡는 **'3개의 겹치는 CCTV 사각지대 교차 검증법'**입니다. 카메라 1대만 있으면 도둑(에러)이 왔다는 건 알아도 어디 있는지 모릅니다. 하지만 거실, 안방, 현관을 교묘하게 비추는 카메라 3대의 녹화본(패리티 1, 2, 3)을 겹쳐서 보면, "1번 카메라와 2번 카메라에만 찍히고 3번엔 안 찍힌 그곳! 바로 화장실 문 앞이다!"라고 에러의 정확한 좌표를 유추하여 범인을 때려잡는 기법입니다.