#include<stdio.h>
int even_parity( int value, int bits)
{
int parity = 0;
/*
//计算值中位为1的个数
*/
while( bits > 0 )
{
parity += value & 1;
value >>= 1;
bits -=1;
}
/*
//若最低为位零,返回True
*/
return ( parity % 2 ) == 0;
}
void main(void)
{
int i = 157;
int b = 8;
if( even_parity(i,b) )
printf("%d has even number bits!\n", i);
else printf("%d has obb number bits!\n", i);
}
通过位操作,逐位读取,位为1,校验值加一,最后判断校验值的奇偶性。