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 相关文章推荐
用js做一个小游戏平台 (一)
Dec 29 Javascript
jquery attr 设定src中含有&(宏)符号问题的解决方法
Jul 26 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
Jun 13 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
Sep 06 Javascript
如何通过javascript操作web控件的自定义属性
Nov 25 Javascript
用C/C++来实现 Node.js 的模块(二)
Sep 24 Javascript
javascript+canvas制作九宫格小程序
Dec 28 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
Jun 05 Javascript
json+jQuery实现的无限级树形菜单效果代码
Aug 27 Javascript
js改变style样式和css样式的简单实例
Jun 28 Javascript
jQuery窗口拖动功能的实现代码
Feb 04 Javascript
JavaScript实现贪吃蛇游戏
Jun 16 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
使用php计算排列组合的方法
2013/11/13 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
利用jquery写的左右轮播图特效
2014/02/12 Javascript
js中document.write的那点事
2014/12/12 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
js实现数字滚动特效
2019/12/16 Javascript
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
keras打印loss对权重的导数方式
2020/06/10 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
预备党员入党思想汇报
2014/01/04 职场文书
高中语文教学反思
2014/01/16 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
免职通知
2015/04/23 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python