在64位机器上的无符号128位除法

问题描述:

我有一个128位的数字存储为2个64位数字(“Hi”和“Lo”)。我只需要将它除以32位数字。我怎么能这样做,使用CPU的本地64位操作? (请注意,我不需要一个任意的精确库,只需要知道如何使用本地操作进行这种简单的分割,谢谢)。在64位机器上的无符号128位除法

如果您使用体系结构可以处理的最大可能本机表示(64位)存储值(128位),则在处理分区的中间结果(如您已经找到:)时会遇到问题)。

但是,您始终可以使用SMALLER表示法。四个32位的数字呢?这样你可以使用本地的64位操作而不会出现溢出问题。

一个简单的实现(在Delphi中)可以找到here

+0

完美。谢谢! – rookie 2009-12-10 01:08:14

一些c代码here