gpt4 book ai didi

java - 为 BigInteger 赋值

转载 作者:行者123 更新时间:2023-12-01 08:04:14 25 4
gpt4 key购买 nike

假设我愿意

BigInteger n;

我可以为 n 分配任何值而不使其溢出吗?例如,

p = new BigInteger(512*512*512, 15, new Random());
n=p;

这是因为我制作了RSA alg。有时它给我正确的值(value)观,有时它给我错误的值(value)观,我想确保我不会在某个地方溢出。

如果溢出是问题所在,我应该这样做吗?或者我应该如何初始化我的 BigInt?

最佳答案

Can I assign any value to n without it overflowing?

BigInteger 可以表示的内容是有限的。作为javadoc说:

"BigInteger must support values in the range -2Integer.MAX_VALUE (exclusive) to +2Integer.MAX_VALUE (exclusive) and may support values outside of that range."

后来,它说:

"BigInteger constructors and operations throw ArithmeticException when the result is out of the supported range ..."

...这样您就不会遇到未通知的溢出(就像处理原始整数类型一样)或类似 INF/NaN 的值(例如浮点类型)。

<小时/>

还有一个问题,如果堆已满/太小,创建一个大的 BigInteger 将抛出 OOME。

<小时/>

If overflow is the problem ...

在您的示例中,BigInteger 代码中的溢出不是问题。您会看到某种异常。

此外,表达式 512*512*512 不会溢出。 (但一般来说,您可能会在构造函数参数表达式中出现溢出......因为这些计算通常是使用原始整数算术完成的,它会悄悄溢出。)

(迂腐...赋值n = p;是一个引用赋值,并且不能溢出或抛出OOME。据我所知,它不可能在上下文中失败Java 模型。您需要硬件错误、电源故障、堆损坏、代码生成错误等...)

关于java - 为 BigInteger 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22797476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com