现有3的7次方,7=1+2+4,则7的二进制位0111,7右移一位是相当于除以2,依次右移相当于除以4,8,也就是说3的2次方,3的4次方,等等。如果幂为奇数,则每次多乘一次底数。
public class PowMofN {
public static void main(String[] args) {
System.out.println(pow(3,7));
}
public static long pow(int M , int N) {
if(M == 0) {
return 0;
}else if(N==0) {
return 1;
}
int base = M;
int p = N >> 1;
while(p != 0) {
base *=base;
if( (p&N)==p) base *=M;
p = p>>1;
}
return base;
}
}