728x90
[오류 검출 코드] 패리티 비트(Parity Bit)와 해밍 코드(Hamming Code)
💡패리티 비트(Parity Bit)란?
정보전달 과정에서 오류 발생여부를 검사하기 위해 추가된 비트를 말하며,
아래의 사진처럼 전송하고자 하는 데이터의 끝에 1비트를 더하여 전송합니다.
패리티 비트는 홀수(odd) 패리티 비트와 짝수(even) 패리티 비트로 분류하는데,
- 전달하고자 하는 DATA의 1의 개수로 홀수와 짝수를 구분합니다.
- 짝수패리티의 경우 0을 붙여주고, 홀수 패리티인 경우 1을 붙여줍니다.
예를 들어, 전달하고자 하는 데이터가 10010101일 경우,
1이 총 4개이므로 짝수 패리티인 0이 붙게 됩니다.
하지만 이러한 패리티비트로는 오류 검출만 가능할 뿐 어디가 잘못됐는지 정정할 수 없습니다.
따라서 잘못된 곳을 찾기 위해서는 해밍 코드를 활용해야 합니다.
💡해밍 코드(Hamming Code)란?
해밍 코드란 자기 정정 부호의 하나로 2bit의 오류 검출해서 1bit 오류를 수정할 수 있는 오류 검출 및 수정 부호를 말합니다.
- 오류의 검출은 물론 스스로 수정까지 하므로 자기 정정 부호라고도 지칭
- 전송 비트 중 1, 2, 4, 8, 16, 32, 64, … , 2ⁿ번째를 오류 검출을 위한 패리티 비트로 사용
- 오류 검출 및 교정을 위한 잉여 비트가 많이 필요
해밍 코드를 이용하여 전체 데이터 비트의 어느 지점에서 오류가 발생했는지 검출할 수 있습니다. 패리티 비트와 해밍 코드는 분리된 개념이 아니라 함께 활용하는 것으로 전송하는 비트 중 2ⁿ 번째 자리를 패리티 비트로 사용합니다.
예를 들어, 전송되는 데이터의 크기가 12일 경우, 패리티 비트는 아래 색칠된 부분 2ⁿ자리에 총 4번 들어가게 됩니다.
p1 : 2⁰ =1번째 자리
p2 : 2¹ =2번째 자리
p3 : 2² =4번째 자리
p4 : 2³ =8번째 자리
728x90
'👩💻TIL > 기술면접' 카테고리의 다른 글
[JavaScript] setInterval, setTimeout 사용하여 반복 실행을 해보자 (0) | 2020.04.21 |
---|---|
[알고리즘] 깊이 우선 탐색(DFS) 과 너비 우선 탐색(BFS) (9) | 2020.02.19 |
[정렬] 선택정렬(Selection Sort)의 개념/Java코드/시간복잡도/공간복잡도 (0) | 2020.02.13 |
클린코드와 코드 리팩토링 (0) | 2020.02.13 |
[web] 쿠키(cookie)와 세션(session)의 개념/차이/용도/작동방식 (16) | 2020.02.11 |
댓글