不使用64位整数将两个32位数字相乘

我们正在使用以下算法进行一些32bit * 32bit乘法

让我们我们想将a(32位)与b(32位)相乘,两者都带符号,

a = ah * 2 ^ 16 + al [ah-高16位,al-低16位]

b = bh * 2 ^ 16 + bl [bh-高16位,bl-低16位]

我们正在有效地做

结果=(al * bl)+(((ah * bl)+(al * bh)) 2 ^ 16)+((ah * bh) 2 ^ 32)~~~


我的问题,

他们有更好的方法吗?

回答:

在任何主流编译器中,在32位平台上仿真64位int都将与自己进行多步数学运算一样有效。但是它将更加可靠地正确。

当使用值足以溢出的简单算术进行运算时,即使是我见过的最优化的数学库,也只使用int64。

以上是 不使用64位整数将两个32位数字相乘 的全部内容, 来源链接: utcz.com/qa/407929.html

回到顶部