大家最好用C语言、解决这个问题、谢谢
判断整数i是2的N次方、如果是返回true,如果不是返回false。
答案:3 悬赏:60 手机版
解决时间 2021-04-26 09:15
- 提问者网友:藍了天白赴美
- 2021-04-25 11:55
最佳答案
- 五星知识达人网友:蓝房子
- 2021-04-25 13:18
while(i>1){
int m = i % 2;
if (m) return false;
i /=2;
}
return true;
全部回答
- 1楼网友:怀裏藏嬌
- 2021-04-25 15:41
有个很简单的方法来判断。如果一个整数A是2的N次方的话,那么A的二进制表示必定是首位为1其余为0,即(2->10,4->100,8->1000……),另外不难发现A-1的二进制(用与A相同位数表示)是首位为0,其余为1。因此编程的思路就是,如果"(A)&(A-1)==0",那么A就是2的N次方。
程序如下:
if((i)&(i-1))
return true;
else
return false;
- 2楼网友:慢性怪人
- 2021-04-25 14:55
#include <stdio.h>
int is2rn( int n )
{
while ( n > 1 ) {
if ( n % 2 == 1 )
return 0;
n /= 2;
}
return 1;
}
int main()
{
int n;
scanf( "%d", &n );
printf( "%s\n", is2rn( n ) ? "true" : "false" );
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯