숫자를 받아 2의 거듭제곱인지 여부를 결정하는 JavaScript 함수를 작성해야 합니다.
예:
f(23) = false f(16) = true f(1) = true f(1024) = true
접근법 -
이진 형식의 2의 거듭제곱은 항상 하나의 비트를 갖습니다. 이렇게 -
1: 0001 2: 0010 4: 0100 8: 1000
따라서 숫자가 0보다 큰지 확인한 후 비트 핵을 사용하여 하나의 비트만 설정되었는지 테스트할 수 있습니다. 같은 내용이 아래에 표시됩니다. -
num & (num - 1)
예시
다음은 코드입니다 -
const num1 = 256; const num2 = 1024; const isPowerOfTwo = (num = 1) => { if (num < 1) { return false; }; return (num & (num - 1)) === 0; }; console.log(isPowerOfTwo(num1)); console.log(isPowerOfTwo(num2)); console.log(isPowerOfTwo(1)); console.log(isPowerOfTwo(23));
출력
다음은 콘솔의 출력입니다 -
true true true false