2009-12-08 40 views
5

我有一個128位的數字存儲爲2個64位數字(「Hi」和「Lo」)。我只需要將它除以32位數字。我怎麼能這樣做,使用CPU的本地64位操作? (請注意,我不需要一個任意的精確庫,只需要知道如何使用本地操作進行這種簡單的分割,謝謝)。在64位機器上的無符號128位除法

回答

3

如果您使用體系結構可以處理的最大可能本機表示(64位)存儲值(128位),則在處理分區的中間結果(如您已經找到:)時會遇到問題)。

但是,您始終可以使用SMALLER表示法。四個32位的數字呢?這樣你可以使用本地的64位操作而不會出現溢出問題。

一個簡單的實現(在Delphi中)可以找到here

+0

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

2

一些c代碼here

相關問題