해밍 코드: Difference between revisions
From IT Wiki
No edit summary |
|||
Line 7: | Line 7: | ||
** ex) 검출 비트 추가: '''1 0''' 1 '''1''' 0 0 1 '''1''' | ** ex) 검출 비트 추가: '''1 0''' 1 '''1''' 0 0 1 '''1''' | ||
* 오류 검출 및 교정을 위한 잉여 비트가 많이 필요 | * 오류 검출 및 교정을 위한 잉여 비트가 많이 필요 | ||
== 구성 == | |||
* 전송 비트 = 정보 비트 + 패리티 비트 | |||
== 검출 과정 == | |||
;홀수 패리티 사용 | |||
* 정보 비트: 111010101 | |||
=== 패리티 비트 추가 === | |||
# 자리 그리기 __O_OOO_OOOOOOO_ | |||
# 정보 비트 넣기 __1_110_10101 | |||
# 패리티 비트 계산#1: '''0'''_'''1'''_'''1'''1'''0'''_'''1'''0'''1'''0'''1''' | |||
# 패리티 비트 계산#2: 0'''01'''_1'''10'''_1'''01'''01 | |||
# 패리티 비트 계산#4: 001'''0110'''_101'''01''' | |||
# 패리티 비트 계산#8: 0010110'''010101''' | |||
# 패리티 비트 결과: '''00'''1'''0'''110'''0'''10101 | |||
=== 오류 검출 === | |||
* 정보 비트에 오류를 삽입 1110'''0'''0101 (5번째 자리 1 → 0) | |||
* 패리티 비트 검사 | |||
** 각 패리티 비트를 한번 더 계산한다. | |||
** 홀수가 맞춰지도록 패리티가 삽입되었으므로, 정상이라면 패리티가 0이 되어야 함 | |||
** #1: '''0'''_'''1'''_'''1'''1'''0'''_'''0'''0'''1'''0'''1''' = 1 | |||
** #2: 0'''01'''_1'''10'''_0'''01'''01 = 0 | |||
** #4: 001'''0110'''_001'''01''' = 0 | |||
** #8: 0010110'''000101''' = 1 | |||
* 각 값을 세로로(아래서 위로) 더해보면 1001 = 5 이다. | |||
* 즉, 5번째 값에 오류가 있으니 5번째 비트를 반전시킴으로써 에러를 수정할 수 있다. | |||
== 해밍 거리 == | == 해밍 거리 == | ||
Line 13: | Line 41: | ||
== 같이 보기 == | == 같이 보기 == | ||
* [[패리티]] | |||
* [[오류 검출]] | * [[오류 검출]] | ||
* [[오류 제어]] | * [[오류 제어]] |
Revision as of 17:21, 12 January 2020
- 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
송신한 데이터와 수신한 데이터의 각 대응하는 비트가 서로 다른 비트의 수