1

我想为我的项目所需的 java 中的幂(基数,指数)创建一个最佳方法,其中基数和指数的类型都是 int,并且指数 <= 10^9。但是这必须在 java 中完成吗?我知道可以使用bitshift,但它本身就涉及到java中bitset的使用。请建议一个实现

4

2 回答 2

0

只需使用java.lang.BigInteger类。它有一个pow()方法,可以以一种相当有效的方式完全满足您的需求。

于 2012-10-16T16:55:08.310 回答
-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 次)。此代码不处理大数或负数,但我不确定您是否需要。

于 2012-10-16T20:23:57.957 回答