如何判断一个数是不是2的n次方

2019-07-13
    //第一种: 不断除以2,看最后结果是否等于1
     function check(i){
	     if(i%2==1){
	     	console.log("false");
	     }else{
		    i = i/2;
		    if(i!=1){
		    	check(i);
		    }else{
		     	console.log("true");
	     	    }
	     }
     }
     check(8);

    //第二种: 转换成2进制数,如果是2的n次方,则只会出现1次字符串“1”
     function check(num){
	     let result = num.toString(2);
	     result = result.split("1");
	     if(result.length == 2){
	     	console.log("true");
	     }else{
	     	console.log("false");
	     }
     }
     check(1023);

    //第三种:位运算符&判断,如果是2的n次方,则(i&(i-1))一定为0
    function check(i) {
        console.log((i & (i - 1)) == 0);
    }
    check(8);

发表评论

邮箱地址不会被公开。 必填项已用*标注