How to check if a number is a power of 2

后端 未结 25 1575
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-22 03:30

Today I needed a simple algorithm for checking if a number is a power of 2.

The algorithm needs to be:

  1. Simple
  2. Correct for any ulong
25条回答
  •  -上瘾入骨i
    2020-11-22 04:07

    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));
    }
    

提交回复
热议问题