第一种:宏定义
#include <stdio.h>
//取反加1后与原数相与还是等于原来的那个数就说明是2的n次幂
#define S(n) ( ((n & ((~n) + 1))) ==n)
int main()
{
int i;
while (1)
{
scanf("%d",&i);
if(S(i))
printf("%d,Y\n",i);
else
printf("%d,N\n",i);
}
return 0;
}
第二种
x&(x-1)==0;