剑指offer 数值的整数次方

来源:互联网 发布:屋顶告白大会 知乎 编辑:程序博客网 时间:2024/06/05 14:22
给定一个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;  }}