判断一个数是否为2的n次方(n为正数)
int main()
{
int n = 0;
scanf("%d",&n);
if(n & (n - 1) == 0)
{
printf("是\n");
}
else
printf("不是\n");
return 0;
}
大家帮我看下代码哪里错了
等号==优先级高于逻辑与&符号,所以要加括号
n & (n - 1) == 0改为 ( n & (n - 1) )== 0
if(n & (n - 1) == 0)
改为
if((n&(n-1)) == 0)
直接判断%2的结果不就好了,怎么简单怎么来