【java】判断一个数是不是2的N次方

转载 2015年11月18日 10:35:40

第一种方法,对N进行循环除以2. 

  1. public boolean nCF(int n){  
  2.     boolean b = false;  
  3.     while(true){  
  4.         int j=n%2;  
  5.         n=n/2;  
  6.         if(j==1){  
  7.             b=false;  
  8.             break;  
  9.         }if(n==2){  
  10.             b=true;  
  11.             break;  
  12.         }  
  13.           
  14.     }  
  15.     return b;  
  16. }  
第二种方法,算2的N次方数据,比较N,小于继续乘以2.等于的话就是2的N次方。大于的话就不是2的N次方。

  1. public boolean nCF2(int n){  
  2.     boolean b = false;  
  3.     int x = 2;  
  4.     while(true){  
  5.         if(x==n){  
  6.             b=true;  
  7.             break;  
  8.         }if(x<n){  
  9.             x=2*x;  
  10.         }else{  
  11.             b=false;  
  12.             break;  
  13.         }  
  14.     }  
  15.     return b;  
  16. }  


第三种方法,2的N次方。用二进制表示都是10,100,1000…… 
然后的话就有了第三种方法。 
  1. public boolean nCF3(int n){  
  2.     boolean boo = true;  
  3.     String s = Integer.toBinaryString(n);  
  4.     byte[] b = s.getBytes();  
  5.   
  6.   
  7.     for(int i=1;i<b.length;i++){  
  8.         if(b[i]!=48){  
  9.             boo = false;  
  10.             break;  
  11.         }  
  12.     }  
  13.     return boo;  
  14.       
  15. }  

最简单快捷的一种
private static boolean isPowerOfTwo(int val) {
        return (val & -val) == val;
    }

在js中
#使用 $result = x&(x-1) 来判断;
if(x & (x-1))
{
   echo "不是2的n次方"
}
else
{
   echo "是2的n次方"
}



怎么判断一个数是不是2的N次方

题目:给定一个整数num,判断这个整数是否是2的N次方。比如,2,4,8是2的那次方,6,10不是2的N次方。 请看下面的程序:   01 public static bool Ch...

判断一个数是否为2的N次方问题

对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。 void judge(int n) { wh...

如何判断一个数是否为2的N次方

题目:给定一个整数num,判断这个整数是否是2的N次方。比如,2,4,8是2的那次方,6,10不是2的N次方。 请看下面的程序: public static bool Check1...

判断一个数是否是2的N次方

对于判断一个数是否为2的N次方问题,通常想到的最为直接的办法就是对这个数不断对2取余,为0就将该数变为该数除以2,直到最后该数为1为止。 void judge(int n) { wh...

快速判断一个数是否是2的n次方,若是,求n

将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。         如果将这个数减去1后会发...

巧用&符号,判断一个数的奇偶性,判断一个数(x)是否是2的n次方

判断一个数的奇偶性,是在C++ PRIMER习题集看见的,感觉有意思: 假设有一个整数x哈,假设 那么就有:if(x&1) cout...
  • cl_cjh
  • cl_cjh
  • 2016年12月24日 12:12
  • 740

快速判断一个数是否是2的幂次方c++

将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。         如果将这个数减去1后会发...

剑指offer 求一个数的n次方,不考虑大数问题

一定得注意取值,当指数小于0,指数大于0,指数等于0时 如果指数和底数都是0时怎么办,还有浮点数的比较#include #define ESP 0.0000001 typedef enum boo...

zjut 1740 Find x 从此题推广到求一个数的N次方的小数精度问题

这题题意就是给定一个1~21的整数,求出其开三次方的值,保留小数点100位。这题大概的做法就是先由普通开三次方确认一个头,然后通过大数乘逐位逼近结果,因为小数比较麻烦,所以只能每次逼近一位,在逼近的字...
  • qiueji
  • qiueji
  • 2012年02月28日 23:09
  • 858

Java数据结构与算法之2的n次方判定

2的N次方,你将如何判定?
  • a80C51
  • a80C51
  • 2015年09月24日 22:06
  • 554
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【java】判断一个数是不是2的N次方
举报原因:
原因补充:

(最多只允许输入30个字)