# 오류 정정 코드 (Error Correcting Code)

오류 정정 코드(ECC)는 데이터 표현에 중복 정보를 추가하여 데이터가 저장 또는 전송 중에 변경될 경우 일부 손상을 수정할 수 있도록 하는 데이터 코딩입니다. 수신 측은 덧붙은 중복 정보를 이용해 오류가 있는지 감지하고, 일정 범위 안의 오류는 재전송 없이 스스로 고칩니다.

## 작동 원리

1. **부호화:** k비트 메시지를 정해진 규칙에 따라 n비트 부호어(codeword)로 바꿉니다(n > k). 추가된 n − k비트가 중복(패리티) 정보입니다.
2. **전송·저장:** 잡음이나 매체 결함으로 일부 비트가 바뀔 수 있습니다.
3. **복호화:** 받은 비트열과 가장 가까운 유효 부호어를 찾아 원래 메시지를 복원합니다.

## 부호 거리와 정정 능력

두 부호어가 서로 다른 비트 수를 해밍 거리라고 하고, 코드 안에서 가장 가까운 두 부호어 사이의 거리를 최소 거리 d라고 합니다. 최소 거리가 d인 코드는 최대 d − 1개의 오류를 감지하고, 최대 t = ⌊(d − 1)/2⌋개의 오류를 정정할 수 있습니다. 정정 능력을 넘는 오류는 고칠 수 없고, 다른 부호어로 잘못 복원될 수도 있습니다. 중복을 늘리면 정정 능력은 커지지만 저장·전송 오버헤드와 계산량도 늘어납니다.

## 대표적인 코드

- **해밍 코드:** 해밍 (7,4) 코드는 4비트 데이터에 3비트 패리티를 붙여 최소 거리 3을 얻고, 1비트 오류를 정정합니다. 여기에 패리티 1비트를 더한 SECDED 방식은 1비트 정정·2비트 감지를 제공하며 ECC 메모리에 널리 쓰입니다.
- **리드–솔로몬 코드:** 비트가 아니라 심볼(바이트) 단위로 동작해 연속된 오류(버스트 오류)에 강합니다. CD·DVD, QR 코드, 디지털 방송, RAID 6 등에 쓰입니다.
- **BCH 코드:** 여러 비트 오류를 정정하도록 설계할 수 있는 순회 코드로, 플래시 메모리 등에 쓰입니다.
- **LDPC·터보 코드:** 이론적 한계(섀넌 한계)에 가까운 성능을 내며 5G, Wi-Fi, 위성 방송(DVB-S2) 등에 쓰입니다.

## 응용 분야

- **통신:** 모바일 네트워크, 위성 통신, 심우주 탐사처럼 재전송이 어렵거나 지연이 큰 환경에서 필수적입니다.
- **저장 장치:** 하드 드라이브와 SSD는 매체 결함과 시간에 따른 열화를 보정하기 위해 ECC를 씁니다.
- **컴퓨터 메모리:** 우주선(宇宙線)이나 전기적 잡음 때문에 메모리 비트가 저절로 바뀌는 소프트 오류를 ECC RAM이 바로잡습니다.
- **블록체인 주소:** 비트코인의 Bech32 주소는 BCH 코드 기반 체크섬을 써서 몇 글자 이내의 입력 오류를 확실히 감지합니다. 지갑은 이런 오류를 「고쳐서」 송금하지 않고 거부하도록 권장됩니다.

ECC는 하드웨어 결함과 잡음에 대비하는 기술이며, 사용자가 실수로 지우거나 고친 데이터는 복구하지 못하므로 별도의 백업이 필요합니다.

---
출처: https://achivx.kr/glossary/error-correcting-code-%EC%98%A4%EB%A5%98-%EC%A0%95%EC%A0%95-%EC%BD%94%EB%93%9C/ · ACHIVX 용어 사전 · 수정일 2026-10-20
