昨天去面试时,面试官问了一道面试题,说如何判断一个数是不是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;

}

}

结果如下:

方法二

通过二进制的方法可以判断一个数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);

}

结果如下:

另外 1也是2的0次方幂。

还有其他条件没有写出,这个方法是来判断一个数是不是2的n次方幂,并没有写出这个数是不是整数,可以的话,自己添加条件判断。

以上这篇js 判断一个数字是不是2的n次方幂的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

js 实现2的n次方计算函数_js 判断一个数字是不是2的n次方幂的实例相关推荐

  1. python编写一个函数判断一个数是否为素数是则返回yes_编写函数isPrime,判断一个数字是否为素数,是则返回字符串 YES ,否则返回字符串 NO 。_学小易找答案...

    [填空题]语句 x = (3,) 执行后x的值为_______________. [填空题]字典对象的___________方法可以获取指定"键"对应的"值", ...

  2. 2的多少次方是2048用php代码,js 如何判断一个数字是不是2的n次方幂

    昨多现业讲进行效通近年有务这行定果过近年有天去面试时,面试官问了一道面试题,说如何判断一个数是不是2的n次方幂,我当时不知道2的n次方幂是什么(糗大发了

  3. js 实现2的n次方计算函数_JS中数据结构与算法---排序算法

    排序算法的介绍 排序也称排序算法 (Sort Algorithm),排序是将 一组数据 , 依指定的顺序 进行 排列的过程 . 排序的分类 内部排序 : 指将需要处理的所有数据都加载 到 内部存储器( ...

  4. C语言---写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串

    题目: 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串. #include <string.h> #include <stdio.h> void left_re ...

  5. 编写一个函数,该函数能判断一个英文句子str(带空格)中是否含有某个单词w,如“How old are you?”含有“old”。在main函数中输入一个英文句子,再输入一个单词,如果英文句子中含有那

    题目要求: 编写一个C程序,实现以下功能: 编写一个函数,该函数能判断一个英文句子str(带空格(升级版))中是否含有某个单词w,如"How old are you?"含有&quo ...

  6. python用fun判断水仙花数_功能:调用函数fun判断一个三位数是否水仙花数。

    功能:调用函数fun判断一个三位数是否"水仙花数".在main函数中从键盘输入一个三位数,并输出判断结果.请编写fun函数.说明:所谓"水仙花数"是指一3位数, ...

  7. 用mod函数判断奇偶C语言,Excel2007中利用if和mod函数判断一个数字是否为奇偶

    判断一个数字是否为奇偶的方法有很多,可以使用眼力来进行快速判断,也可以使用函数来进行处理.第一种方法适用于数据量很少的情况,如果数据量比较庞大就不适宜了:第二种方法适用于数据量比较大的情况下,理论上靠 ...

  8. js 实现2的n次方计算函数_密码杂凑函数的基本性质探讨

    密码学研究的宗旨是保证数据和通信的机密性.完整性和认证性,其中完整性和认证性的实现依赖于一类关键的密码学函数---密码杂凑函数.密码杂凑函数通常用来计算数据的短"指纹"(也称杂凑值 ...

  9. js 实现2的n次方计算函数_「计算机组成原理」:一文快速了解计算机原理知识点-附思维导图...

    衡量一台计算机性能的优劣是根据多项技术指标综合确定的,既包括硬件的各种性能指标,又包括软件的各种功能. 第一章.计算机系统概论 1.计算机系统组成及性能: 计算机系统是由"硬件"和 ...

最新文章

  1. python使用heapq快速查找最大或最小的 N 个元素
  2. python输出数据到excel-使用python将大量数据导出到Excel中的小技巧分享
  3. ubuntu 安装 mongodb并修改仓库路径
  4. 关于WebSocket分布式实现的一种方案
  5. 电脑复制粘贴_手机扫一扫,现实物体隔空复制粘贴进电脑!北大校友的AI新研究,现在变成AR酷炫应用...
  6. mybatis基础学习3---特殊sql语句(备忘)
  7. IOS学习:常用第三方库(GDataXMLNode:xml解析库)
  8. 安卓平板usb变显示器_RJ45与USB信号接入工业显示器有何不同?
  9. 树莓派B+使用入门RPI库安装wringPi库安装
  10. Java并发系列—并发编程挑战
  11. 对linux下loop设备的理解。
  12. Xeogl 基于 WebGL 的 3D 引擎
  13. Linux 下文件IO编程进程控制实验
  14. matlab powergui的作用,powergui模块作用
  15. RK3288开发板——Debian8系统制作
  16. 计量模型 | 前定变量#时间FE
  17. 信号相参性(相干性)
  18. JS中(function(){xxx})(); 这种写法是什么意思?
  19. cpa禁用计算机型号,CPA考试计算器有讲究,这些计算器禁止携带入场!
  20. DNS主从服务器的构建

热门文章

  1. 利用Django搭建投票系统
  2. 2021年广西省安全员C证新版试题及广西省安全员C证复审考试
  3. 数据结构时间空间复杂度笔记
  4. GCC编译 C与C++ C89与C99
  5. 简单交通灯识别Traffic-Light-Classify
  6. Linux xz文件的压缩解压
  7. 深入浅出TensorFlow2函数——tf.data.Dataset.batch
  8. Linux内核学习遇到的汇编指令
  9. java程序员—工作中开发经验总结
  10. 杭州python培训机构面授_杭州python学习机构为何要选面授?