function powerOfTwo(num) {
//2의 0승인 1은 true
if(num === 1){
return true;
}
//num이 홀수(2로 나눈값에 나머지가 있다면)라면 무조건 false;
if(num%2) {
return false;
}
//2를 거듭제곱해서 비교할 수의 초기값은 2
let powered = 2;
//poweredNum이 num보다 작을때까지만 while문 진행
while(powered < num) {
powered *= 2; // poweredNum에 2을 곱한 후 다시 poweredNum에 대입
}
//반복이 끝나면 poweredNum과 num이 같은지 비교값을 리턴
return powered === num;
}
function powerOfTwo(num) {
//n & (n-1) === 0 이면 2의 거듭제곱이다.
//따라서 0이면 if(false)이므로 true가 리턴되고, 1이면 if(true)기 때문에 false가 리턴된다.
if(num & (num-1) || num === 0){
return false;
}
return true;
}