Leetcode-231. Power of Two

1.方法一:n&(n-1)=0

/**
 * @param {number} n
 * @return {boolean}
 */
var isPowerOfTwo = function(n) {
    if((n>0) && (!(n&(n-1)))){
        return true;
    }
    else{
        return false;
    }
};

2.方法二:2^x=n;log(2^x)=log(n);xlog(2)=log(n);x=log(n)/log(2);精确范围0.00000000001

  var res=Math.log(n)/Math.log(2);
    if(Math.abs(res - Math.round(res))< 0.0000000001){
        return true;
    }
    else{
        return false;
    }

3.方法三:统计二进制中1的个数必须为1个时,数值为2的幂次方

/**
 * @param {number} n
 * @return {boolean}
 */
var isPowerOfTwo = function(n) {
    var cnt=0;
    while(n>0){
       cnt+=(n&0x01);
        n>>=1;
    }
    if(cnt === 1){
        return true;
    }
    else{
        return false;
    }
};
原文地址:https://www.cnblogs.com/Decmber/p/5135172.html