x22 = x16 * x4 * x2
对于指数22而言
22的二进制为10110,可以发现一个规律,从右到左:
01101
(x20 * 0) + (x21 * 1) + (x22 * 1) + (x23 * 0) + (x24 * 1)
= x16 * x4 * x2=x22
下面函数是求ab
public static long pow(long a, long b) {
long result = 1;
long base = a;
while(b > 0) {
if((b & 1) != 0) { // 如果当前二进制尾数为1,将倍数记录
result *= base;
}
base *= base; // 翻倍
b >>= 1; // 二进制数右移
}
return result;
}