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 相关文章推荐
IE autocomplete internet explorer's autocomplete
Jun 30 Javascript
javascript中apply和call方法的作用及区别说明
Feb 14 Javascript
JavaScript动态提示输入框输入字数的方法
Jul 27 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
Dec 08 Javascript
编写高质量JavaScript代码的基本要点
Mar 02 Javascript
Bootstrap所支持的表单控件实例详解
May 16 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
Nov 23 Javascript
浅析Ajax语法
Dec 05 Javascript
详解Angular CLI + Electron 开发环境搭建
Jul 20 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
Oct 20 Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 30 Javascript
基于JavaScript实现贪吃蛇游戏
Mar 16 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 全局变量范围分析
2009/08/07 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中使用HTMLParser解析html实例
2015/02/08 Python
详解Python中的文本处理
2015/04/11 Python
详解python时间模块中的datetime模块
2016/01/13 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
python中数据库like模糊查询方式
2020/03/02 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
六查六看剖析材料
2014/02/15 职场文书
小学五年级学生评语
2014/04/22 职场文书
个人总结与自我评价
2014/09/18 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python