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 相关文章推荐
CSS常用网站布局实例
Apr 03 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
Dec 02 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
Jun 30 Javascript
JavaScript实现的一个日期格式化函数分享
Dec 06 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
Sep 16 Javascript
Bootstrap每天必学之表单
Nov 23 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
Nov 30 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
Dec 06 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
Oct 25 Javascript
原生js无缝轮播插件使用详解
Mar 09 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
一个程序下载的管理程序(三)
2006/10/09 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
2014/12/22 PHP
PHP实现懒加载的方法
2015/03/07 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
最新28个很棒的jQuery 教程
2011/05/28 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
js 走马灯简单实例
2013/11/21 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
详解JavaScript 的变量
2019/03/08 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
Python迭代器和生成器介绍
2015/03/06 Python
python对html代码进行escape编码的方法
2015/05/04 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
预备党员入党思想汇报
2014/01/04 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
银行授权委托书格式
2014/10/10 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript