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中after的两种用法实例
Jul 03 Javascript
自己编写的类似JS的trim方法
Oct 09 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
Mar 04 Javascript
移动手机APP手指滑动切换图片特效附源码下载
Nov 30 Javascript
轻松搞定jQuery.noConflict()
Feb 15 Javascript
由浅入深剖析Angular表单验证
Jul 14 Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 Javascript
JavaScript实现获取select下拉框中第一个值的方法
Feb 06 Javascript
select获取下拉框的值 下拉框默认选中方法
Feb 28 Javascript
JS中用EL表达式获取上下文参数值的方法
Mar 28 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
May 27 Javascript
vue实现简单加法计算器
Oct 22 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之第七天
2006/10/09 PHP
PHP 5.0 Pear安装方法
2006/12/06 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
用JavaScript显示随机图像或引用
2009/04/21 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
python对字典进行排序实例
2014/09/25 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
深入了解Python 变量作用域
2020/07/24 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
同学聚会欢迎辞
2014/01/14 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
个人年度总结报告
2015/03/09 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android
JavaScript流程控制(分支)
2021/12/06 Javascript
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL