🧩 해밍코드란?
해밍코드(Hamming Code)는 전송 중 발생할 수 있는 1비트 오류를 검출하고 수정할 수 있는 오류 정정 코드입니다.
송신 측에서는 데이터 비트와 패리티 비트를 함께 전송하고,
수신 측에서는 이 패리티 비트를 이용해 오류가 난 비트를 찾아내죠.
💡 핵심 포인트
- 1비트 오류는 위치까지 탐지 및 자동 수정 가능
- 2비트 오류는 검출만 가능
⚙️ 해밍코드의 기본 구조
해밍코드는 2의 거듭제곱 위치(1, 2, 4, 8, …) 에 패리티 비트(P) 를 삽입하고,
나머지 위치에는 데이터 비트(D) 를 채워 넣습니다.
예를 들어 4비트의 데이터를 전송할 경우,
총 7비트의 해밍코드가 만들어집니다.
| 위치 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 비트종류 | P1 | P2 | D1 | P3 | D2 | D3 | D4 |
🧮 예시: 정보 비트 1011
4비트 정보 1011을 해밍코드로 만들어볼게요.
| 위치 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 종류 | P1 | P2 | D1 | P3 | D2 | D3 | D4 |
| 데이터 | ? | ? | 1 | ? | 0 | 1 | 1 |
🧠 패리티 비트 계산 (홀수 패리티 기준)
홀수 패리티(odd parity)는
1의 개수가 홀수가 되도록 패리티 비트를 설정하는 방식입니다.
✅ P1 비트
- 검사 위치: 1, 3, 5, 7
- 해당 비트: P1, D1=1, D2=0, D4=1
- 1의 개수 = 2 (짝수) → 홀수로 만들기 위해 P1 = 1
✅ P2 비트
- 검사 위치: 2, 3, 6, 7
- 해당 비트: P2, D1=1, D3=1, D4=1
- 1의 개수 = 3 (홀수) → 이미 홀수 → P2 = 0
✅ P3 비트
- 검사 위치: 4, 5, 6, 7
- 해당 비트: P3, D2=0, D3=1, D4=1
- 1의 개수 = 2 (짝수) → 홀수로 만들기 위해 P3 = 1
✨ 최종 해밍 코드
| 위치 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 종류 | P1 | P2 | D1 | P3 | D2 | D3 | D4 |
| 값 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
✅ 홀수 패리티 해밍 코드: 1011011
🔍 검산으로 확인하기
각 패리티 그룹에서 1의 개수가 홀수가 되는지 확인해봅시다!
| 패리티 | 검사 위치 | 1의 개수 | 홀수 여부 |
| P1 | 1, 3, 5, 7 → 1,1,0,1 | 3 | ✅ |
| P2 | 2, 3, 6, 7 → 0,1,1,1 | 3 | ✅ |
| P3 | 4, 5, 6, 7 → 1,0,1,1 | 3 | ✅ |
모두 홀수네요 ☺︎
🧾 정리
| 정보 비트 | 1011 |
| 패리티 비트 위치 | 1, 2, 4 |
| 패리티 방식 | 홀수 패리티(odd) |
| 최종 해밍 코드 | 1011011 |
| 오류 정정 가능 여부 | 1비트 오류 검출 및 수정 가능 |
'Computer' 카테고리의 다른 글
| 리눅스에 대한 전반적인 것 (0) | 2023.03.05 |
|---|