[Algorithm] Parity Bit
데이터의 무결성을 확인하기 위한 방법 중 하나로 보내는 data의 1의 개수가 홀수인지 짝수인지 확인하여 받는 쪽에서도 동일한지 확인하는 방법이다.
예를 들면 ‘a’ ASCII data를 보낸다고 했을 때 0110_0001 (97)의 data가 전송 될 것이다. 만약 짝수 정책 (even parity)를 사용한다고 했을 때, 1의 개수는 현재 3개이기 때문에 추가적으로 1개를 최상위 bit에 추가해주고 전송해준다. Example code는 아래와 같다.
#include <stdio.h> unsigned int hammingWeight(unsigned int data) { unsigned int res = data - ((data >> 1) & 0x55); res = (res & 0x33) + ((res >> 2) & 0x33); return (res (res >> 4)) & 0x0F; } int main() { char data = 'a'; if(hammingWeight(data)%2 == 1) data |= 0x80; // --------- data transfer --------- if(hammingWeight(data)%2 == 0) printf("Data is valid\n"); else printf("Data is invalid\n"); return 0; }