Finding if a number is a power of 2

前端 未结 7 1157
孤城傲影
孤城傲影 2021-02-18 18:15

Just out of curiosity, how can you tell if a number x is a power of two (x = 2^n) without using recursion.

Thanks

7条回答
  •  别跟我提以往
    2021-02-18 18:46

    The top answer:

    ($x & ($x - 1)) == 0
    

    seemed to have issues with larger numbers for me, this works well for larger numbers using the same logic but with GMP:

    gmp_strval(gmp_and($x, gmp_sub($x, 1))) == 0
    

提交回复
热议问题