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中的Window窗口对象
Jan 16 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
Mar 01 Javascript
THREE.JS入门教程(5)你应当知道的十件事
Jan 24 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
May 10 Javascript
纯CSS3代码实现滑动开关效果
Aug 19 Javascript
js实现下拉列表选中某个值的方法(3种方法)
Dec 17 Javascript
vue.js获取数据库数据实例代码
May 26 Javascript
Vue中的scoped实现原理及穿透方法
May 15 Javascript
Vue resource三种请求格式和万能测试地址
Sep 26 Javascript
微信小程序性能优化之checkSession的使用
Mar 06 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
Apr 23 Javascript
js canvas实现俄罗斯方块
Oct 11 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程序员编程注意事项
2008/04/10 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
关于jQuery中的end()使用方法
2011/07/10 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
Async Validator 异步验证使用说明
2017/07/03 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
Angular弹出模态框的两种方式
2017/10/19 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
2020/04/28 Javascript
python 全文检索引擎详解
2017/04/25 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
python银行系统实现源码
2019/10/25 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
宣传部部长竞选演讲稿
2014/04/26 职场文书
借名购房协议书范本
2014/10/06 职场文书
观看建国大业观后感
2015/06/01 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
springboot+VUE实现登录注册
2021/05/27 Vue.js
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技