Search code examples
phpbit-manipulationbitwise-and

What does the bitwise code "$n & ($n - 1)" do?


What does this code mean and what are other ways accomplish the same without using bit shifting?

if ($n & ($n - 1))

Solution

  • That formula checks to see whether a number is a power of 2 (if your condition as written is true, then the number is not a power of two).

    Stated another way, your test checks to see whether there is more than one "1" bit set in the binary representation of $n. If there is zero or only one bit set, then your test will be false.

    It is by far the most efficient way to determine that property.