剑指offer 数值的整数次方

题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。

代码:
 1 class Solution {
 2 public:
 3     double Power(double base, int exponent) {
 4         if(base == 0)
 5             return 0;
 6         if(exponent == 0)
 7             return 1;
 8         int n = exponent;
 9         if(n < 0)
10             n = abs(n);
11         double res = 1;
12         while(n != 0){
13             if( (n&1) == 1)
14                 res *= base;
15             base *= base;
16             n >>= 1;
17         }
18         return exponent > 0 ? res : (1/res);
19     }
20 };

我的笔记:

链接:https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00
来源:牛客网

 * 1.全面考察指数的正负、底数是否为零等情况。
 * 2.写出指数的二进制表达,例如13表达为二进制1101。
 * 3.举例:10^1101 = 10^0001*10^0100*10^1000。
 * 4.通过&1和>>1来逐位读取1101,为1时将该位代表的乘数累乘到最终结果。
posted @ 2020-05-20 21:03  John_yan15  阅读(145)  评论(0编辑  收藏  举报