一个数n若是2的某幂次方,则n&(n-1)==0 比如 8=(1000) 8-1=(0111)两者与为0~
判断他是几次幂可以用递归,或者移位
- i=-1;
-
while(n)
-
{
-
n=n>>1;
-
i++;
-
}
- cout<
若不能用循环则递归搞起~~
- #include<iostream>
-
-
using namespace std;
-
-
int pow(int x)
-
{
-
if(x==1)
-
return 0;
-
else
-
return 1+pow(x>>1);
-
}
-
-
int main()
-
{
-
int n,i=0;
-
-
while(cin>>n)
-
{
-
if((n&(n-1))!=0)
-
cout<<"no"<<endl;
-
else
-
{
-
i=pow(n);
-
cout<<i<<endl;
-
}
-
}
-
-
}
阅读(9485) | 评论(0) | 转发(0) |