如何检查数字是否是2的幂

时间:2020-02-23 14:34:15  来源:igfitidea点击:

有许多方法检查数字是否为2的幂

方法1:

这是非常简单和直接的方法。

  • 运行一小时循环,如果n是偶数,则检查条件(n%2 == 0)。
  • 如果甚至在每次迭代中也将其划分为2.
  • 当你离开时循环和n等于1时,数字是2的幂
  • 如果数字不等于1,则Number不是2的幂
public static boolean powerOfTwoGeneral(int n)
 {
 while(n%2==0)
 {
 n=n/2;
 }
 if(n==1)
 {
 return true;
 }
 else
 {
 return false;
 }
 }

方法2:

我们可以使用按位和运算符来检查数字是否为2的幂

public static boolean powerOfTwoBitwise(int n)
 {
  return (n & n-1)==0;
 }

检查数量是否为2的功率是一个非常简单的方法。
让我们看看它是如何工作的。
让我们说n是8.它的二进制表示将是:1000。
二进制数量为7将是:0111. 1 0 0 0 0&0 1 1 1 1 - 0 0 0 0 0 ---如果数字为2,那么它只将一位设置为"1"。
例如:8:1000 32:100000

同样在检查7和31的二进制形式时,它将将所有位设置为"1"7:111 31:11111,因此如果在n和n-1上应用按位和运算符,结果是0.它意味着数字是2的幂

Java程序检查号码是否为二号:

package org.igi.theitroad;
 
public class PowerOfTwoMain {
 
 public static void main(String[] args) {
  System.out.println("128 is power of two : "+powerOfTwoGeneral(128));
  System.out.println("64 is power of two : "+powerOfTwoBitwise(64));
  System.out.println("22 is power of two : "+powerOfTwoBitwise(22));
  System.out.println("22 is power of two : "+powerOfTwoGeneral(22));
 }
 //Approach 1
 public static boolean powerOfTwoGeneral(int n)
 {
  while(n%2==0)
  {
   n=n/2;
  }
  if(n==1)
  {
   return true;
  }
  else
  {
   return false;
  }
 }
 //Approach 2
 public static boolean powerOfTwoBitwise(int n)
 {
  return (n & n-1)==0;
 }
 
}

当我们运行上面的代码时,我们将得到以下结果

128 is power of two : true
64 is power of two : true
22 is power of two : false
324 is power of two : false