js 判断一个数字是不是2的n次方幂的实例


Posted in Javascript onNovember 26, 2017

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

结果如下:

js 判断一个数字是不是2的n次方幂的实例

 方法二

通过二进制的方法可以判断一个数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);
}

 结果如下:

js 判断一个数字是不是2的n次方幂的实例

另外 1也是2的0次方幂。

还有其他条件没有写出,这个方法是来判断一个数是不是2的n次方幂,并没有写出这个数是不是整数,可以的话,自己添加条件判断。

以上这篇js 判断一个数字是不是2的n次方幂的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
JS 动态加载脚本的4种方法
May 05 Javascript
javascript 隔行换色函数代码
Oct 24 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
Jun 27 Javascript
js判断变量初始化的三种形式及推荐用的形式
Jul 22 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
Jqgrid之强大的表格插件应用
Dec 02 Javascript
浅谈Sticky组件的改进实现
Mar 22 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
Jan 19 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
Feb 23 Javascript
js实现开关灯效果
Mar 30 Javascript
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
微信小程序wx.request实现后台数据交互功能分析
Nov 25 #Javascript
利用JavaScript的%做隔行换色的实例
Nov 25 #Javascript
zTree节点文字过多的处理方法
Nov 24 #Javascript
JavaScript程序设计高级算法之动态规划实例分析
Nov 24 #Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
Nov 24 #Javascript
javaScript和jQuery自动加载简单代码实现方法
Nov 24 #jQuery
Bootstrap modal只加载一次数据的解决办法(推荐)
Nov 24 #Javascript
You might like
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
php实现的http请求封装示例
2016/11/08 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
google地图的路线实现代码
2009/08/20 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
Python的净值数据接口调用示例分享
2016/03/15 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
Django app配置多个数据库代码实例
2019/12/17 Python
Python和Sublime整合过程图示
2019/12/25 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
什么是Python包的循环导入
2020/09/08 Python
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
应届大学生求职信
2013/12/01 职场文书
毕业实习个人鉴定范文
2013/12/10 职场文书
祖国在我心中演讲稿
2014/01/15 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
库房管理员岗位职责
2014/03/09 职场文书
社区文化建设方案
2014/05/02 职场文书
公司担保书格式范文
2014/05/12 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书