题
我有一个128位的数字存储为2的64位数字(“嗨”和“Lo”的)。我只需要一个32位的数字来划分的。我怎么能做到这一点,利用CPU原生64位操作?
(请注意,我不需要一个任意精度的图书馆。只需要知道如何使用本机的操作,使这个简单的划分。谢谢)。
解决方案
如果使用的是最大可能的本地表示你的架构可以处理(64位),那么必须处理的划分的中间结果的问题(因为你已经发现:))存储该值(128位)。
但你总是可以使用更小的表示。怎么样四个数字32位的?这样,您就可以使用原生64位的操作,而不溢出问题。
一个简单的实现(在Delphi)可以发现这里。
其他提示
一些C代码这里
不隶属于 StackOverflow