방법 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가 탐욕스러운 알고리즘을 사용하여 변경 문제를 해결하는 방법
위 내용은 숫자가 2의 n승인지 확인하는 js 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!