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 应用代码 方便的排序功能
Feb 06 Javascript
js使用eval解析json(js中使用json)
Jan 17 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
Aug 15 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
Jun 19 Javascript
js控制文本框输入的字符类型方法汇总
Jun 19 Javascript
js实现获取当前时间是本月第几周的方法
Aug 11 Javascript
js仿微博实现统计字符和本地存储功能
Dec 22 Javascript
jquery分隔Url的param方法(推荐)
May 25 Javascript
Angular实现的简单查询天气预报功能示例
Dec 27 Javascript
Vue实现带进度条的文件拖动上传功能
Feb 23 Javascript
js实现掷骰子小游戏
Oct 24 Javascript
Vue中nprogress页面加载进度条的方法实现
Nov 13 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全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python脚本实现集群检测和管理功能
2015/03/06 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
pyqt5中动画的使用详解
2020/04/01 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
Python调用飞书发送消息的示例
2020/11/10 Python
selenium自动化测试入门实战
2020/12/21 Python
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
群众路线批评与自我批评
2014/02/06 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
部队个人年终总结
2015/03/02 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
Python基础之Socket通信原理
2021/04/22 Python
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python