给出一行C语言表达式,判断给定的整数是否是一个2的幂


下面是一液世个判断庆悉给定整数是否是2的幂的C语言代码。

int is_power_of_two(int n)
{
return ((n != 0) && !(n & (n - 1)));
}
上述代码使用位运算的方法判断给定整数n是否是2的幂。具体来说,如果n是2的幂,则誉埋乎n二进制中只有一个1,如4(100),8(1000),16(10000)等。因此,将 n&(n-1) 的结果取反后,应该得到0。如果n!=0,则n是2的幂函数。
一个数n
若(n&(n-1))==0则n是2的幂
#include<stdio.h>
int fun(int num)
{
if(num==1)
return 1;
if(num%2==0)
fun(num/2);
else
return 0;
}
int main()
{
int num;
printf("请输入任意整数:\n");
scanf("%d"氏信差,&num);
if(fun(num)==1)
printf("%d是坦州2的歼皮幂!\n",num);
else
printf("%d不是2的幂!\n",num);
}
思路就是这个整数N求2的底数袜差M,再把M以2求幂与告搭皮N相枝局比。相等就是,不相等就不是
if(N==pow(2,log(N)/log(2)))