16 lines
326 B
C

#include <stdio.h>
/* 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));
}