如何判断一个数是不是是2的N次方

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断一个数是不是是2的N次方相关的知识,希望对你有一定的参考价值。

#include //取反加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);elseprintf("%d,N\\n",i);return 0;。 参考技术A while (i)

if (2 == i)

printf("YES: %d\n",count);
break;

if (0 == i%2)

i /= 2;
count++;

else

printf("NO\n");
break;

如何判断一个数是不是是2的n次方

参考技术A 参考:http://bbs.csdn.net/topics/370058619
如题,如何判断一个整数是否是2的N次方,我能想到的方法有两个
1.一直除2,看最后是否等于1.(最笨的方法)
2.转换成2进制,看是否是这个样子的:1,10,100,1000,10000,就是除了最高位是1,其他都是0,或者说只有一个1.

以上是关于如何判断一个数是不是是2的N次方的主要内容,如果未能解决你的问题,请参考以下文章

怎么巧判断一个整数是不是是2的n次方幂

js 如何判断一个数字是不是2的n次方幂

判断整数是不是是2的幂次方

算法:Java实现判断一个数是否是2的N次方

用最快的方法判断一个数是否2的n次方

求一个数二进制中1的个数(优化)。判断一个数是不是2的n次方