Kartik - 11 months ago 54

PHP Question

Just out of curiosity, how can you tell if a number x is a power of two (x = 2^n) without using recursion.

Thanks

Answer

One way is to use bitwise AND. If a number `$x`

is a power of two (e.g., 8=1000), it will have no bits in common with its predecessor (7=0111). So you can write:

```
($x & ($x - 1)) == 0
```

Note: This will give a false positive for $x == 0.

Source (Stackoverflow)