Method 1
How to determine whether a number is 2 raised to the nth power? The simple way to determine is to directly divide the number num by 2. If the remainder is 0, Then divide num/2 by 2, and then determine whether the remainder is 0. If so, continue with the previous step until num=1 in the end.
For example:
2 2%2=0 (2/2)=1 is
4 4%2=0 (4/2 )%2=0 (4/2/2)=1 Yes
6 6%2=0 (6/2)%2=1 No
7 7%2=1 No
24 24%2=0 (24/2)%2=0 (24/2/2)%2=0 (24/2/2/2)%2=1 Not
Code implementation:
function check(num){ if(num != 1){ while(num != 1){ if(num%2 == 0){ num = num / 2; }else{ return false; } } return true; }else{ return true; } }
##The results are as follows:
Method 2
Using the binary method, you can determine whether a number num is the nth power of 2. The rules can be known , as long as it is a power of 2, the highest bit must be 1 and the rest are 0. When num-1, the highest bit is 0 and the rest are 1.Bitwise AND operation: 1&1=1 0&1=0 0&0=0 1&0=02 6 ---> 110 8 ---> 1000 7 ---> 111Example:
#8 Binary 1000 8-1 Binary 0111 Press Bitwise AND operation 1000&0111 --> 0000 So 8 is 2 raised to the nth power.
9 The binary system 1001 The binary system 1000 of 9-1 Bitwise AND operation 1001&1000 ---> 1000 So 9 is not a power of 2. 24’s binary 11000 24-1’s binary 10111 Bitwise AND operation 11000&10111 ---> 10000 So 24 is not a power of 2. You can write the binary number of num through num.toString(2).Code implementation:
##
function check(num){ return (num > 0) && ((num & (num - 1)) == 0); }
There are other conditions not written out. This method is to judge whether a number is the nth power of 2. It does not write out whether the number is an integer. If possible, add conditional judgment by yourself.
Related recommendations:
How to use greedy algorithm to solve the change problem in JSJS abbreviation method example to determine whether it is an empty string Detailed explanation
PHP and JS determine whether a string is a number
The above is the detailed content of js example of determining whether a number is an nth power of 2. For more information, please follow other related articles on the PHP Chinese website!