我正在上一个类来计算2的幂(后来我将修改它以使用任何数字)并使用BigInt显示整个值,该计算似乎正常工作,但是该方法为某些函数返回负值指数。
例如2 ^ 31返回-2147483648而不是2147483648 并且2 ^ 100返回-1267650600228229401496703205376而不是1267650600228229401496703205376。
可能是什么原因造成的?
import java.math.BigInteger;
导入静态java.lang.Math.pow;
公共类博览会{
private int count;
private int countRest;
private int restValue = 1;
public BigInteger factorer(int num, int exponent){
if(exponent < 32){ return BigInteger.valueOf(pot(num, exponent)); }
count = exponent / 31;
countRest = exponent % 31;
BigInteger base = BigInteger.valueOf(pot(num, 31));
BigInteger result = base.pow(count);
if(countRest != 0){
restValue = pot(num, countRest);
}
BigInteger rest = BigInteger.valueOf(restValue);
BigInteger finalResult = result.multiply(rest);
return finalResult;
}
public int pot(int num, int exponent){
if(exponent <= 0) return 1;
return num * pot(num, exponent -1);
}
public double neg(int num, int exponent){
return pow(num, exponent);
}
}