Как судить, есть ли хотя бы 1 в двоичном представлении числа с использованием C? [Дубликат]

На этот вопрос уже есть ответ здесь:

Вычисление паритета 2 ответа

Уже есть вопросы по подсчету сколько1s есть в числе, но этот вопрос касается оценки, есть ли четное или нечетное число 1.

Любые операторы цикла или условные (включая переключатели) не допускаются. Также следует избегать операторов деления, умножения или модуля. Чтобы быть более точным, мы можем предположить, что это 32-разрядное целое число без знака.

На самом деле у меня уже есть реализация, но я не могу понять причину, почему она работает. Любое доказательство его правильности или любая новая идея будет очень полезна.

int even_ones(unsigned x)
{
    x ^= x>>16;
    x ^= x>>8;
    x ^= x>>4;
    x ^= x>>2;
    x ^= x>>1;

    return !(x & 1);
}

Ответы на вопрос(4)

Ваш ответ на вопрос