c语言编写【问题描述】以十进制形式输入一个整数,判断这个数是否是2的幂 【输入形式】一个十进制整数 【输出形式】判断这个数是否是2的幂 【样例输入】256 【样例输出】256 is a power of 2
时间: 2024-11-27 09:15:30 浏览: 3
将无符号的八进制字符串转换为十进制整数。-c语言教程
在C语言中,我们可以使用位运算符来检查一个数是否是2的幂。以下是实现这个功能的代码:
```c
#include <stdio.h>
#include <stdbool.h> // 需要包含bool类型
bool isPowerOfTwo(int n) {
// 如果数字小于2,不可能是2的幂
if (n <= 1) {
return false;
}
// 对于大于1的数,通过右移一位看最低位是否为1,如果是则不是2的幂,否则继续右移直到最高位
while (n != 1) {
if (n & 1) { // 如果最低位是1,则不是2的幂
return false;
}
n >>= 1; // 右移一位
}
return true;
}
int main() {
int input;
printf("Enter a decimal integer: ");
scanf("%d", &input);
if (isPowerOfTwo(input)) {
printf("%d is a power of 2.\n", input);
} else {
printf("%d is not a power of 2.\n", input);
}
return 0;
}
```
在这个代码中,我们通过不断右移二进制表示的数字,检查最低位(最右边)是否始终保持为1。如果过程中最低位变为0,则说明它是2的幂;否则不是。
阅读全文