>웹 프론트엔드 >JS 튜토리얼 >숫자가 2의 n승인지 확인하는 js 예제

숫자가 2의 n승인지 확인하는 js 예제

小云云
小云云원래의
2017-12-07 16:00:492386검색

방법 1

숫자가 2의 n승인지 확인하는 방법 간단한 방법은 숫자 num을 2로 직접 나누는 것입니다. 나머지가 0이면 num/2를 다시 2로 나눕니다. , 나머지가 0인지 확인합니다. 그렇다면 최종 값이 num=1이 될 때까지 이전 단계를 계속합니다.

예:

2 2%2=0 (2/2)=1 예

4 4%2=0 (4/2)%2=0 (4/2/2)=1 예

6 6%2=0 (6/2)%2=1 아님

7 7%2=1 아님

24 24%2=0 (24/2)%2=0 (24/2/2 ) %2=0 (24/2/2/2)%2=1 아님

코드 구현:


function check(num){
 if(num != 1){
  while(num != 1){
   if(num%2 == 0){
    num = num / 2;
   }else{
    return false;
   }

  }
  return true;
 }else{
  return true;
 }
}


결과는 다음과 같습니다.

방법 2

이진법을 사용하면 숫자 num이 2의 n제곱인지 판단할 수 있습니다. 규칙에 따르면 2의 거듭제곱인 한 가장 높은 비트는 1이어야 하고 나머지는 1이어야 합니다. num-1일 때 가장 높은 비트는 0이고 나머지는 1입니다.

비트별 AND 연산: 1&1=1 0&1=0 0&0=0 1&0=0

2 ---> ---> 11

4 ---> 100 6 ---> 110

8 ---> 111

예:

8 -1의 이진수 0111 비트별 AND 연산 1000&0111 --> 0000 따라서 8은 2의 n승입니다.

9의 이진수 1001 9-1의 이진수 1000 비트별 AND 연산 1001&1000 ---> 1000 따라서 9는 2의 거듭제곱이 아닙니다.

24의 이진수 11000 24-1의 이진수 10111 비트별 AND 연산 11000&10111 ---> 10000 따라서 24는 2의 거듭제곱이 아닙니다.

num.toString(2)을 통해 num의 바이너리를 작성할 수 있습니다.

코드 구현:


function check(num){
 return (num > 0) && ((num & (num - 1)) == 0);
}


결과는 다음과 같습니다.

또한 1은 2의 0승이기도 합니다.

기재되지 않은 조건도 있습니다. 이 방법은 숫자가 2의 n승인지 판단하는 방법입니다. 가능하면 조건부 판단을 직접 추가하세요.

관련 권장 사항:

JS가 탐욕스러운 알고리즘을 사용하여 변경 문제를 해결하는 방법

빈 문자열인지 확인하는 js 약어 방법의 자세한 예

PHP와 JS는 문자열이 숫자인지 확인합니다.

위 내용은 숫자가 2의 n승인지 확인하는 js 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.