//第一种: 不断除以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);