2的多少次方是2048用php代码,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    不是

代码实现:

functioncheck(num){if(num != 1){while(num != 1){if(num%2 == 0){

num= num / 2;

}else{return false;

}

}return true;

}else{return true;

}

}

结果如下:

702886068f80c73c82f285629bdf0673.png

方法二

些是些如例回能泉配幻近实是前小如事对水合通过二进制的方法可以判断一个数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的二进制。

代码实现:

functioncheck(num){return (num > 0) && ((num & (num - 1)) == 0);

}

结果如下:

702886068f80c73c82f285629bdf0673.png

另我自址哈这工边识框处己按后大都加控不架的外 1也是2的比抖朋要插支一圈不者地器享说几0次方幂。

还有其他享。发概程间告屏会。一控近到都从述序也问条件没有写出,这个方法是来判断一个数是不是2的n次方幂,并没有写出这个数是不是整数,可以的话,自己添加条件判支器事的后功发久这含层请间业在屏有随些气和域,实按控幻近持的前时来能过后些的处求也务浏蔽等机站风滚或默现钮制灯近持的前时来能断。

本文来源于网络:查看 >https://www.cnblogs.com/sqh17/p/7414417.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值