패리티 비트와 해밍 코드
패리티 비트와 해밍 비트의 개념과 간단한 사용법을 알아봅니다.
패리티 비트
비트
1
의 개수를 맞춤으로써, 오류를 검출한다.
- 짝수 패리티 비트, 홀수 패리티 비트가 있습니다.
- 짝수 기준으로 설명하겠습니다.
- 만약 전송하고 싶은 데이터가
1011
이라면, 현재1
의 개수는 3개 입니다.- 리틀 앤디안 기준으로 가장 우측에 비트
1
을 더 붙여줍니다. 10111
이 됩니다.- 만약 짝수 패리티 비트 에서
10110
이 온다면, 오류가 났음을 알게됩니다.
- 리틀 앤디안 기준으로 가장 우측에 비트
패리티 비트의 한계
- 오류가 발생했음만 식별할 수 있고, 수정할 수 없습니다.
- 오류 비트가 짝수개가 발생한경우에는 검출 할 수 없습니다.
10111
이 정상적인 비트 일때 맨 앞, 맨 뒤 비트 두개에 문제가 생긴다면00110
이 됩니다.1
의 비트수가 여전히 짝수개 이므로 오류가 낫음을 찾지 못하게 됩니다.
해밍 코드
패리티 비트를 이용하여 오류검출과 동시에 수정까지 할 수 있게 됩니다.
2^n
위치에 패리티 비트를 심어주어줍니다.- 이 비트부터 시작하는 데이터 비트들이 정상인지를 확인합니다.
오류 검출 & 수정 과정
- 짝수로 확인할때
1101100
라는 데이터가 왔다고 합니다. - 역시나 리틀 앤디안으로 우측에서 좌측 순으로 읽습니다.
- 이때 패리티 비트는
2^n
1번째, 2번째, 4번째 가 됩니다.- P1(패리티 비트1) 범위를 체크하면
- P1 D1 D2 D3 를 확인하게 되고, 우측부터 셋을때 1번째 3번째 5번째 7번째 비트를 확인하게 됩니다.
1010
으로1
이 짝수개이므로 에러가 없다고 판단하고0
으로 합니다.
- P2의 경우
1110
이므로 홀수이므로 에러가 있다고 판단하고1
으로 합니다. - P3의 경우
1101
이므로1
로 합니다.
110
을 10진수로 바꾸면6
이고 6번째 비트에 문제가 있다고 판단합니다.- 1
0
01100 이 올바른 비트 입니다.
- 1
장점
- 클라이언트 측에서 서버에게 재전송 요청을 보내지 않아도 됩니다.
- 우주, 지구처럼 먼거리의 경우, 재전송 요청, 수신 자체가 굉장한 낭비입니다.
단점
- 필요 비트의 개수가 많아 집니다.
Reference
- 리틀 앤디안
- https://gyoogle.dev/blog/computer-science/computer-architecture/%ED%8C%A8%EB%A6%AC%ED%8B%B0%20%EB%B9%84%ED%8A%B8%20&%20%ED%95%B4%EB%B0%8D%20%EC%BD%94%EB%93%9C.html
- https://m.blog.naver.com/ggggamang/221113176831