#include /* Return 1 when x contains an odd number of 1s; 0 otherwise. Assume w=32 */ int odd_ones(unsigned x) { x = x ^ (x >> 16); x = x ^ (x >> 8); x = x ^ (x >> 4); x = x ^ (x >> 2); x = x ^ (x >> 1); return x & 1; } int main() { printf("%d %d\n", odd_ones(0xF1F1F0F1), odd_ones(0xFF00AAAA)); }