Вычисление паритета
Я не совсем понимаю этот алгоритм вычисления бита четности. Может кто-нибудь объяснить, пожалуйста, подробно?
Следующий код взят из книги «Хакерское наслаждение»:
int parity(unsigned x) {
unsigned y;
y = x ^ (x >> 1);
y = y ^ (y >> 2);
y = y ^ (y >> 4);
y = y ^ (y >> 8);
y = y ^ (y >>16);
return y & 1;
}