一语句实现x是否为2的若干次幂的判断
代码:
void main()
{
int a;
scanf("%d”,&a);
printf(“%c",(a)&(a-1)?'n':'y');
}
分析:
自己推断了一下,应该是二进制的按位与运算,这样就不难解释了,例如:
若a为十进制的8,用二进制表示为1000,则(a-1)为0111,
最终(a)&(a-1)为0,程序结果打印y,即表示a为2的若干次幂。
以上是个人看法,不是很确定,希望能有人给出评价与指正,多谢!
一语句实现x是否为2的若干次幂的判断
代码:
void main()
{
int a;
scanf("%d”,&a);
printf(“%c",(a)&(a-1)?'n':'y');
}
分析:
自己推断了一下,应该是二进制的按位与运算,这样就不难解释了,例如:
若a为十进制的8,用二进制表示为1000,则(a-1)为0111,
最终(a)&(a-1)为0,程序结果打印y,即表示a为2的若干次幂。
以上是个人看法,不是很确定,希望能有人给出评价与指正,多谢!