Today I needed a simple algorithm for checking if a number is a power of 2.
The algorithm needs to be:
ulong
Here is another method I devised, in this case using | instead of & :
|
&
bool is_power_of_2(ulong x) { if(x == (1 << (sizeof(ulong)*8 -1) ) return true; return (x > 0) && (x<<1 == (x|(x-1)) +1)); }