c语言判断2的幂次方
时间: 2024-09-13 12:00:46 浏览: 48
C语言判断一个数是否是2的幂次方或4的幂次方
在C语言中,判断一个数是否是2的幂次方可以通过位运算来实现,因为2的幂次方在二进制表示中只有一个位是1,其余位都是0。例如,4表示为二进制的100,8表示为二进制的1000等等。以下是一个判断2的幂次方的函数示例:
```c
#include <stdio.h>
int isPowerOfTwo(unsigned int n) {
return n && !(n & (n - 1));
}
int main() {
unsigned int num;
printf("请输入一个正整数:");
scanf("%u", &num);
if (isPowerOfTwo(num)) {
printf("%u 是2的幂次方。\n", num);
} else {
printf("%u 不是2的幂次方。\n", num);
}
return 0;
}
```
这个函数首先检查`n`是否大于0,因为0显然不是2的幂次方。然后,它利用了这样一个事实:如果`n`是2的幂次方,则`n`只有一个位是1,而`n-1`将会把那个1后面的0全部变成1,并且进位到更高的位上,这样`n & (n - 1)`的结果就会是0。如果`n`不是2的幂次方,那么`n & (n - 1)`将不会为0。
阅读全文