当前位置:首页 > 编程教程 > javascript技术文章 > js 判断一个数字是不是2的n次方幂的实例

js 如何判断一个数字是不是2的n次方幂

  • 发布时间:
  • 作者:码农之家
  • 点击:197

这篇文章主要知识点是关于js、判断、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

JavaScript基础教程
  • 类型:JS教程大小:14 MB格式:PDF作者:陈建瓯
立即下载

js 判断一个数字是不是2的n次方幂的实例

昨天去面试时,面试官问了一道面试题,说如何判断一个数是不是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次方幂的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

JavaScript 相关电子书
学习笔记
网友NO.310905

js判断传入时间和当前时间大小实例(超简单)

实例如下: //判断时间是否过期function judgeTime(time){var strtime = time.replace("/-/g", "/");//时间转换//时间var date1=new Date(strtime);//现在时间var date2=new Date();//判断时间是否过期return date1date2?true:false;} 以上这篇js判断传入时间和当前时间大小实例(超简单)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

网友NO.478688

PHP判断JSON对象是否存在的方法(推荐)

在实际测试中php读取json数组时 使用简单的 if 或者 array_key_exists 去判断对象是否存在是会报错的,以下是google搜寻的正确判断方法 实际上出现报错只是我对php还不是很精通 因此可能我认为正确的判断方法同样不是最完美的解决方法甚至是错误的 此篇博文留作自用 错误代码: $structure = imap_fetchstructure($connection, $id, FT_UID);if (array_key_exists('parts', $structure)){} 会出现报错 Warning: array_key_exists() expects parameter 2 to be array, boolean given 正确的解决方案是: if (is_array($structure) array_key_exists('parts', $structure)) { //...magic stuff here } 而还有一种就是使用 isset 来直接判断: if(isset($structure['parts'])){} //这个函数用来测试变量是否已经配置。若变量已存在则返回 true 值。其它情形返回 false 值。 //因此需要若变量存在且值不为NULL,才返回 TURE 以上所述是小编给大家介绍的PHP判断JSON对象是……

网友NO.689701

泛谈JS逻辑判断选择器 || &&

前言 || 与 在JS里与其它语言不一样,这是选择器运算符,而非逻辑运算符。 对于||来说,若判断为true,则返回第一个值,为false返回第二个值。 相反,若判断为 true,则返回第二个,为 false为返回第一个值。 绝对不是像其它语言那样返回true或false,而是会返回第一个值或第二个值。 简单的测试代码 先是true与false的测试,后将false改为数值0. 除了|| 与之外易让人疑惑外,JS里的假值表也算是个大疑点。 let A = true;let B = true;testLogic(A,B); A = true;B = false;testLogic(A,B); A = false;B = true;testLogic(A,B); A = false; B = false;testLogic(A,B); /*假值表,以下值 可以被强制布尔转换为false,其它转换皆为trueundefinednullfalse+0,-0,NaN"" 空字符串其它皆为真值,如空对象{}*/console.log("-----------------next test ---------------");A = true;B = true;testLogic(A,B);A = true;B = 0;testLogic(A,B);A = 0;B = true;testLogic(A,B);A = 0; ……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com