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 03 Javascript
javascript中Number对象的toString()方法分析
Dec 20 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
Mar 01 Javascript
快速掌握Node.js模块封装及使用
Mar 21 Javascript
浅析$.getJSON异步请求和同步请求
Jun 06 Javascript
JS 实现可停顿的垂直滚动实例代码
Nov 23 Javascript
postman+json+springmvc测试批量添加实例
Mar 31 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
javascript异步处理与Jquery deferred对象用法总结
Jun 04 jQuery
vue自定义正在加载动画的例子
Nov 14 Javascript
Webpack5正式发布,有哪些新特性
Oct 12 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验证是否是md5编码的简单代码
2014/04/01 PHP
php常用数学函数汇总
2014/11/21 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
删除重复数据的算法
2006/11/23 Javascript
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
JavaScript 函数式编程的原理
2009/10/16 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
JS字符串按逗号和回车分隔的方法
2017/04/25 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
Python selenium如何设置等待时间
2016/09/15 Python
python实现多线程抓取知乎用户
2016/12/12 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
python中PyQuery库用法分享
2021/01/15 Python
目标责任书范文
2014/04/14 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
募捐感谢信
2015/01/22 职场文书
感恩教育主题班会
2015/08/12 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
nginx.conf配置文件结构小结
2022/04/08 Servers