패리티 비트 계산기 쉽게 이해하기 — 개념과 원리
패리티 비트는 가장 단순한 오류 검출 방법으로, 1의 개수를 짝수나 홀수로 맞추는 비트 하나를 더합니다. 이 계산기는 데이터에 붙일 패리티 비트를 구하고, 패리티를 붙인 비트열을 보여 주며, 마지막 비트가 이미 패리티인 수신 데이터를 검사합니다.
계산 방법
데이터 비트의 1 개수를 셉니다.
짝수 패리티: 개수가 홀수면 1, 아니면 0
홀수 패리티: 개수가 홀수면 0, 아니면 1
같은 뜻으로, 패리티 비트 = (개수 mod 2) XOR 종류(짝수 0, 홀수 1)
검사: 받은 비트열 전체의 1 개수가 정한 패리티와 맞으면 통과입니다.
원리
비트 하나가 뒤집히면 1의 개수가 하나 바뀌어 짝수·홀수가 바뀝니다. 보내는 쪽과 받는 쪽이 패리티를 약속하면, 비트 하나가 뒤집힌 데이터는 검사를 통과하지 못합니다. 비트 하나와 간단한 XOR만으로 되므로 직렬 통신이나 일부 메모리에 쓰입니다. 약점은 두 비트가 뒤집히면 원래 패리티가 돌아와 알아채지 못하고, 어느 비트가 틀렸는지도 알 수 없다는 점입니다.
예제 풀이
기본값인 비트 1011001, 짝수 패리티로 계산합니다.
- 1의 개수: 1 + 0 + 1 + 1 + 0 + 0 + 1 = 4입니다.
- 4는 이미 짝수이므로 패리티 비트 = 0입니다.
- 패리티를 붙인 비트열 = 1011 0010입니다.
- 1011001 자체를 수신 데이터(마지막 1이 패리티)로 보면 1이 4개라 짝수이므로 패리티 정상입니다.
결과 해석
데이터 뒤에 패리티 비트를 붙여 보내십시오. 받는 쪽은 1을 세어 패리티 오류가 나면 홀수 개의 비트, 대개 하나가 바뀐 것으로 봅니다. 오류가 두 개씩이나 몰려서 생길 수 있다면 CRC나 해밍 코드 같은 더 강한 부호를 쓰십시오. 짝수와 홀수 패리티의 검출 능력은 같고, 양쪽이 같은 규칙을 쓰기만 하면 됩니다. 직렬 통신 설정의 E(짝수), O(홀수), N(없음)이 바로 이 선택입니다.
흔한 실수
- 한쪽은 짝수, 다른 쪽은 홀수 패리티를 쓰는 경우
- 검사를 통과하면 오류가 없다고 믿는 경우(두 비트 오류는 못 잡습니다)
- 검사할 때 패리티 비트 자체를 빼고 세는 경우
- 패리티로 오류를 고칠 수 있다고 생각하는 경우(검출만 합니다)
자주 묻는 질문
짝수 패리티와 홀수 패리티는 어떻게 다른가요?
짝수 패리티는 전체 1의 개수를 짝수로, 홀수 패리티는 홀수로 맞춥니다.
패리티로 오류를 고칠 수 있나요?
아닙니다. 오류가 있다는 것만 알려 주고 위치는 모릅니다.
두 비트 오류는 왜 못 잡나요?
두 번 뒤집히면 개수가 0이나 2만큼 바뀌어 짝·홀이 그대로이기 때문입니다.
패리티는 어디에 쓰이나요?
UART 직렬 통신, 일부 메모리 시스템, 간단한 데이터 검사에 쓰입니다.
출처: R. W. Hamming, "Error Detecting and Error Correcting Codes", The Bell System Technical Journal 29(2): 147–160, 1950, §2 (single error detecting codes)