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 While 循环基础教程
Apr 05 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
Jun 13 Javascript
JS判断、校验MAC地址的2个实例
May 05 Javascript
原生javaScript实现图片延时加载的方法
Dec 22 Javascript
jquery超简单实现手风琴效果的方法
Jun 05 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
BootStrap 标题设置跨行无效的解决方法
Oct 25 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
Nov 21 Javascript
微信小程序使用wxParse解析html的方法示例
Jan 17 Javascript
详解如何使用微信小程序云函数发送短信验证码
Mar 13 Javascript
微信小程序自定义modal弹窗组件的方法详解
Dec 20 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/11/23 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
php之curl设置超时实例
2014/11/03 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
9个比较实用的php代码片段
2016/03/15 PHP
checkbox 多选框 联动实现代码
2008/10/22 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
python实现词法分析器
2019/01/31 Python
Python: 传递列表副本方式
2019/12/19 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
新电JAVA笔试题目
2014/08/31 面试题
公司借条范本
2015/05/25 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫