我想在我的项目所需的java中为power(base,exponent)创建一个最佳方法,其中base和exponent的类型都是int,而exponent< = 10 ^ 9.但是这必须要做在java中?我知道可以使用bitshift,但它本身涉及在java中使用bitset.Kindly建议实现
答案 0 :(得分:0)
只需使用java.lang.BigInteger
课程即可。它有一个pow()方法,可以以相当有效的方式完成您想要的操作。
答案 1 :(得分:-1)
由于指数是int,你已经有了数字的二进制表示(计算机也是如此)。所以你应该有三个整数,基数,指数和一个用于计算的临时整数,还有一个用于求解。你从这开始:
unsigned int base;//you manage input for this and exponent like you wish, probably passed in as parameters
unsigned int exponent;
unsigned int temp = base;
unsigned int answer = 1;
while (exponent!=0){
if (exponent%2 == 1){
answer *= temp;
}
exponent>>1;
temp<<1;
}
请尝试此算法,让我知道它是如何工作的。 while外观以指数的最大位长度运行(即32次)。此代码不处理大数字或负数,但我不确定您是否需要这个。