Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 비트 연산을 사용하여 2의 거듭제곱 확인

<시간/>

숫자를 받아 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