📅  最后修改于: 2023-12-03 14:39:39.405000             🧑  作者: Mango
在计算机科学中,经常需要判断一个数是否为2的幂。这在算法和数据结构中经常发挥作用。下面是一个C++程序,用于判断一个整数是否为2的幂。
判断一个整数是否为2的幂,可以通过以下方法实现:
以下是C++代码实现的示例:
#include <iostream>
bool isPowerOfTwo(int n) {
if (n <= 0) {
return false;
}
int count = 0;
while (n != 0) {
count += n & 1;
n >>= 1;
}
return count == 1;
}
int main() {
int n;
std::cout << "Enter an integer: ";
std::cin >> n;
if (isPowerOfTwo(n)) {
std::cout << n << " is a power of 2." << std::endl;
} else {
std::cout << n << " is not a power of 2." << std::endl;
}
return 0;
}
上面的代码中,isPowerOfTwo
函数用于判断一个整数n
是否为2的幂。如果n
小于等于0,那么显然不是2的幂,直接返回false
。否则,用一个循环来计算n
的二进制表示中1的个数。使用位运算符&
可以快速地取出二进制中最后一位。将其与1做按位与运算,结果为1表示末位是1,结果为0表示末位是0。将n
右移一位,继续计算。最后,如果1的个数等于1,则n
为2的幂,返回true
,否则返回false
。
在main
函数中,从用户输入读取一个整数n
,然后调用isPowerOfTwo
函数进行判断。
如果输入的整数n
是2的幂,则输出该数是2的幂。否则,输出该数不是2的幂。