What's the simplest way to test whether a number is a power of 2 in C++?


Question

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?

1
82
9/21/2015 2:48:17 AM

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

167
12/2/2015 3:59:01 AM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon