剑指offer 数值的整数次方

给定一个double类型的浮点数baseint类型的整数exponent。求base的exponent次方。

写出指数的二进制表达,例如13表达为二进制1101。
举例:10^1101 = 10^0001*10^0100*10^1000。
通过&1和>>1来逐位读取1101,为1时将该位代表的乘数累乘到最终结果。

代码

public class Solution {
    public double Power(double base, int exponent) {
        //return Math.pow(base, exponent);
        int p = Math.abs(exponent);
        double cur = base;
        double res = 1.0;
        while(p > 0){
            if((p&1)==1) res*=cur;
            cur *= cur;
            p = p>>1;
        }
        return exponent >=0? res:1/res;
  }
}

猜你喜欢

转载自blog.csdn.net/crystal_zero/article/details/73481154
今日推荐