参考链接:参考:http://bbs.csdn.net/topics
以及:https://www.cnblogs.com/rohens-hbg/p/4696930.html
1.一直除2,看最后是否等于1.(最笨的方法)
2.转换成2进制,看是否是这个样子的:1,10,100,1000,10000,就是除了最高位是1,其他都是0,或者说只有一个1.
3.与的运算符,
方法二的实现:
#include<stdio.h>
int main(){
int n,i,j,k;
int a[16];
int count=0;
printf("shuru\n");
scanf("%d",&n);
for ( j=0;j<16;j++)
{
i=n%2;
n=n/2;
a[j]=i;
}
for( k=15;k>=0;k--)
{
printf("%d",a[k]);
if(a[k]==1)
{
count++;
}
//判断是不是只有一个1
}
if(count==1)
{
printf("yes");
}
else{
printf("no");
}
return 0;
}
方法三只需要一句话就可以呃:(i&(i-1))==0)别忘记加上括号啊
#include<stdio.h>
int main(){
int i;
printf("shuru\n");
scanf("%d",&i);
if((i&(i-1))==0)
//if(i & (i - 1) == 0)运算符的优先级
{
printf("okkk");
}
else{
printf("no");
}
return 0;
}