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 相关文章推荐
javascript中的几个运算符
Jun 29 Javascript
Javascript中获取出错代码所在文件及行数的代码
Sep 23 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
Nov 06 Javascript
jQuery元素的隐藏与显示实例
Jan 20 Javascript
JavaScript中的函数声明和函数表达式区别浅析
Mar 27 Javascript
jQuery与getJson结合的用法实例
Aug 07 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
Nov 24 Javascript
Vue.js Ajax动态参数与列表显示实现方法
Oct 20 Javascript
jQuery中 $ 符号的冲突问题及解决方案
Nov 04 Javascript
Django+Vue.js搭建前后端分离项目的示例
Aug 07 Javascript
Express之托管静态文件的方法
Jun 01 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
Jun 19 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 array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
DOM精简教程
2006/10/03 Javascript
关于js类的定义
2011/06/28 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
Python正则表达式的使用范例详解
2014/08/08 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
社区工作者思想汇报
2014/01/13 职场文书
小学毕业寄语大全
2014/04/03 职场文书
环保倡议书
2014/04/14 职场文书
2014法制宣传日活动总结
2014/07/09 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
2016幼儿园新学期寄语
2015/12/03 职场文书