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 相关文章推荐
jQuery ui 1.7更新小结
Aug 15 Javascript
JQuery实现倒计时按钮的实现代码
Mar 23 Javascript
JS获取当前日期时间并定时刷新示例
Mar 04 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
canvas实现探照灯效果
Feb 07 Javascript
js上下视差滚动简单实现代码
Mar 07 Javascript
vue.js从安装到搭建过程详解
Mar 17 Javascript
利用n工具轻松管理Node.js的版本
Apr 21 Javascript
防止页面url缓存中ajax中post请求的处理方法
Oct 10 Javascript
详解vue配置后台接口方式
Mar 29 Javascript
jQuery 查找元素操作实例小结
Oct 02 jQuery
Vue数据双向绑定原理实例解析
May 15 Javascript
微信小程序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中防止SQL注入的最佳解决方法
2013/04/25 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
浅谈JS函数节流防抖
2017/10/18 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
Python用户自定义异常的实现
2020/12/25 Python
网络信息安全承诺书
2014/03/26 职场文书
承诺书范文
2014/06/03 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
作风建设年度心得体会
2014/10/29 职场文书
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android