How can I test whether a number is a power of 2?

algorithm, bit-manipulation, c++

Solution

`(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.

Problem

I need a function like this: ``` // return true if '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?

Original source

Related problems