Мне нужно создать функцию bitParity(int x), которая принимает целое число и возвращает 1, если в битовой форме x есть нечетное количество нулей, и 0 в противном случае.
Пример: bitParity(5) = 0, bitParity(7) = 1 Допустимые действия: ! ~ & ^ | + ‹‹ >>
Мой приятель поделился со мной своим кодом, но когда я сделал расчет с нуля, он, кажется, получил противоположное тому, что он получил, может кто-нибудь немного объяснить этот код, чтобы я понял, как он работает?
int bitParity(int x) {
x = ( x >> 16 ) ^ x;
x = ( x >> 8 ) ^ x;
x = ( x >> 4 ) ^ x;
x = ( x >> 2 ) ^ x;
x = ( x >> 1 ) ^ x;
return (x & 1);
}