21xrx.com
2024-12-22 21:43:48 Sunday
登录
文章检索 我的文章 写文章
如何用C++判断一个数是否为2的幂次方?
2023-07-05 10:43:50 深夜i     --     --
C++ 判断 2的幂次方 算法

C++是一种强大的编程语言,可以用来解决各种复杂的问题。其中一个常见的问题是如何判断一个数是否为2的幂次方。这个问题的解决方法有多种,下面我们将介绍一些常用的方法供大家参考。

方法1:利用位运算

将一个数n与n-1相与,如果结果为0,那么n就是2的幂次方。原理是,2的幂次方转化为二进制后只有一个1,n-1的二进制就是这个1及其后面的0组成的,将两者相与结果必然是0。

bool isPowerOfTwo(int n) {

  if (n <= 0) return false;

  return (n & (n - 1)) == 0;

}

方法2:利用log函数

如果一个数n是2的幂次方,那么log2(n)一定是一个整数。因此,我们可以使用log函数来判断一个数是否是2的幂次方,如果结果是一个整数,那么就是2的幂次方。

bool isPowerOfTwo(int n) {

  if (n <= 0) return false;

  double res = log2(n);

  return res == (int)res;

}

方法3:利用位操作

2的幂次方的二进制有一个特点,除最高位为1外,其余各位都为0。因此,我们可以先判断最高位是否为1,如果是1,再将n右移一位,判断是否为0。如果不断右移,最终得到的数字是0,那么n就是2的幂次方。

bool isPowerOfTwo(int n) {

  if (n <= 0) return false;

  while ((n & 1) == 0) n >>= 1;

  return n == 1;

}

以上三种方法都可以判断一个数是否是2的幂次方,具体使用哪种方法取决于实际情况。使用C++编程,可以灵活选择适合自己的方法来解决问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复