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?