我有一个128位的数字存储为2的64位数字(“嗨”和“Lo”的)。我只需要一个32位的数字来划分的。我怎么能做到这一点,利用CPU原生64位操作?

(请注意,我不需要一个任意精度的图书馆。只需要知道如何使用本机的操作,使这个简单的划分。谢谢)。

有帮助吗?

解决方案

如果使用的是最大可能的本地表示你的架构可以处理(64位),那么必须处理的划分的中间结果的问题(因为你已经发现:))存储该值(128位)。

但你总是可以使用更小的表示。怎么样四个数字32位的?这样,您就可以使用原生64位的操作,而不溢出问题。

一个简单的实现(在Delphi)可以发现这里

其他提示

一些C代码这里

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top