宝哥软件园

js判断一个数是否是2的n次方

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

昨天去面试,面试官问了一个面对面的问题,说如何判断一个数是否是2的n次方。当时我不知道2的n次方是什么(尴尬),但我很幸运地给我解释了一下。最后回家上网查资料,整理方法。

方法一

如何判断一个数是否是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否

代码实现:

函数检查(num){ if(num!=1){ while(num!=1){ if(num % 2==0){ num=num/2;} else { return false} }返回true} else { return true}}结果如下:

方法2

通过二进制方法,我们可以判断一个数num是否是2的n次方。根据定律,只要是2的幂,最高位一定是1,其余的都是0。当num-1时,最高位为0,其余为1。

按位“与”运算:11=1 01=0 00=0 10=0

2 - 10 3 - 11

4 - 100 6 - 110

8 - 1000 7 - 111

示例:

8二进制1000 8-1二进制0111按位AND运算10000111-0000,所以8是2的n次方。

9二进制1001 9-1二进制1000按位AND运算10011000-1000,所以9不是2的幂。

24二进制11000 24-1二进制10111按位AND运算1100010111-10000,所以24不是2的幂。

你可以用num.toString(2)写出num的二进制数。

代码实现:

函数check(num){ return(num 0)((num(num-1))==0;}结果如下:

另外,1也是2的0的幂。

还有其他条件没有写。这个方法是判断一个数是否是2的n次方,而不是判断这个数是否是整数。如果可以的话,加上自己的条件来判断。

上面这个判断一个数是否是2的N次方的js例子,就是边肖和大家分享的全部内容,希望能给大家一个参考和支持。

更多资讯
游戏推荐
更多+