Первое условие исключает 0, что, очевидно, не является степенью 4, но некорректно пройдет следующие два теста. (РЕДАКТИРОВАТЬ: Нет, это не так, как указано. Первый тест избыточен.)
Следующий хороший прием: он возвращает истину тогда и только тогда, когда число является степенью 2. Степень два характеризуется наличием только одного установленного бита. Число с одним установленным битом минус один приводит к числу со всеми битами, предшествующими этому установленному биту (то есть 0x1000 минус один равен 0x0111). И эти два числа, и вы получите 0. В любом другом случае (т.е. не в степени 2), будет хотя бы один бит, который перекрывается.
Итак, на данный момент мы знаем, что это степень 2.
x & 0x55555555
возвращает ненулевое значение (= true), если установлен любой четный бит (бит 0, бит 2, бит 4, бит 6 и т. Д.). Это означает, что это степень 4. (т.е. 2 не проходит, но 4 проходит, 8 не проходит, 16 проходов и т. Д.).