[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;
}