Bisogna ragionare in bit e quindi prendiamo ad esempio un numero pari e uno dispari:
00010010
00010011
ora eseguiamo l'and a uno
00010010 & 00000001 = 00000000
00010011 & 00000001 = 00000001
quindi avremo 0 per pari e uno per dispari quindi se vogliamo che l'if esca per pari lo neghiamo:
al posto di usare la negazione piu semplicemente si potrebbe uscire cosi:
int a=11;
if ((a & 1)==0)
printf("Pari");
else
printf("dispari");
anche se nulla vieta:
int a=10;
if (a & 1)
printf("Dispari");
else
printf("Pari");