I need a function like this:

```
// return true iff 'n' is a power of 2, e.g.
// is_power_of_2(16) => true is_power_of_2(3) => false
bool is_power_of_2(int n);
```

Can anyone suggest how I could write this? Can you tell me a good web site where this sort of algorithm can be found?

`(n & (n - 1)) == 0`

is best. However, note that it will incorrectly return true for n=0, so if that is possible, you will want to check for it explicitly.

http://www.graphics.stanford.edu/~seander/bithacks.html has a large collection of clever bit-twiddling algorithms, including this one.

Licensed under: CC-BY-SA with attribution

Not affiliated with: Stack Overflow