拼团小程序哪一个好_js 判断一个数字是不是2的

js 判断一个数字是不是2的n次方幂的实例       下面小编就为大家分享一篇js 判断一个数字是不是2的n次方幂的实例,具有很好的参考价值,希望对大家有所帮助

昨天去面试时,面试官问了一道面试题,说如何判断一个数是不是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  不是

代码实现:

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

结果如下:

 方法二

通过二进制的方法可以判断一个数num是不是2的n次方幂,规律可知,只要是2的次方幂,必然是最高位为1,其余为0,当num-1时,则最高位是0,其余是1.

按位与运算:  1 1=1  0 1=0 0 0=0 1 0=0

2  ---   10  3  ---   11 

4  ---   100  6  ---   110 

8  ---   1000  7  ---   111

例子: 

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

9  的二进制  1001  9-1 的二进制  1000  按位与运算  1001 1000  --- 1000  所以9不是2的次方幂。

24  的二进制  11000  24-1 的二进制  10111  按位与运算  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次方幂的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持凡科。




扫描二维码分享到微信