这个问题在这里已经有答案了:
(a*b)/c muldiv和处理中间乘法溢出(5个答案)
5个月前关门了。
我有一个非常具体的算法,需要做大量的计算 (a * b) / c
在java中,其中: a
以及 b
是64位长的 a*b
可能会溢出到128位(不总是这样,但至少相当常见) c
是64位长的
结果呢 (a * b) / c
应该适合64位的长度(我们需要检测它是否溢出,但在这种情况下结果并不重要)
有没有一个有效的算法来做这种融合乘除?我很自然地试着用 BigInteger
工作正常,但速度慢得让人无法接受(这需要高性能代码)。
1条答案
按热度按时间jgzswidk1#
布斯乘法算法