js 如何判断一个数字是不是2的n次方幂
2018-06-24 00:01:26来源:未知 阅读 ()
昨天去面试时,面试官问了一道面试题,说如何判断一个数是不是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次方幂,并没有写出这个数是不是整数,可以的话,自己添加条件判断。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 如何用javascript连接access数据库 2020-03-20
- ?javascript如何控制上传文件的大小 2020-03-19
- Js中如何使用sort() 2020-03-18
- 如何用算法删除重复数据 2020-03-18
- jQuery异步提交表单的两种方式 2020-03-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash