第一步判断是否为2的n次幂
private static Boolean IfSquare2(int num)
{
return ~(num-1)==-num;//(num&-num)==num;//(num&(num-1))==0
}
第二步计算n
private static int ChangePower(int num)
{
num = Math.Abs(num);
int n = 0;
while ((num >>= 1) != 0)
n++;
return n;
}
第三步调用Method方法即可
public static int Method(int num)
{
return IfSquare2(num) ? ChangePower(num) : -1;
}