Очень простая проблема практики, которая по какой-то причине сильно смущает меня. У меня есть номер 0x55555555, который я хочу получить в C, используя только побитовые операторы |и <<. Вы также можете использовать любое число меньше 0xFF как часть смены / или. Наконец, нужно использовать менее 6 операторов, поэтому я не могу просто посылать спам по одному, а затем |с 5. </p>
Для меня проблема в том, что я пытаюсь понять, как заставить 5/0101 повторяться. Конечно, я могу просто сдвинуть 5, но это оставляет 0, например, это (5 << 4 -> 0101 0000).
int test () {return (5<<21);}