- 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
- 오류 검출 및 교정을 위한 잉여 비트가 많이 필요
구성
- 전송 비트 = 정보 비트 + 패리티 비트
검출 과정
- 홀수 패리티 사용
- 정보 비트: 111010101
패리티 비트 추가
- 자리 그리기 __O_OOO_OOOOOOO_
- 정보 비트 넣기 __1_110_10101
- 패리티 비트 계산#1: 0_1_110_10101
- 패리티 비트 계산#2: 001_110_10101
- 패리티 비트 계산#4: 0010110_10101
- 패리티 비트 계산#8: 0010110010101
- 패리티 비트 결과: 0010110010101
오류 검출
- 정보 비트에 오류를 삽입 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번째 비트를 반전시킴으로써 에러를 수정할 수 있다.
해밍 거리
- Hamming Distance
송신한 데이터와 수신한 데이터의 각 대응하는 비트가 서로 다른 비트의 수