2010-08-21 55 views
3

如何在C#中使用20位而不是32位來加/減/乘和除整數?20位整數運算

這些操作會比32bit精度更快嗎?

例如,這.NET庫設有20和30位算術以不同的速度:http://complex-a5.ru/polyboolean/index.html

感謝。

+7

你能告訴我們爲什麼你只想使用20位? – 2010-08-21 11:24:53

+0

我不得不懷疑他們會在這些備用位上添加一些額外的非座標數據。 – cyborg 2010-08-23 07:02:19

+0

@Frank:位數決定了操作的精確度。 – abenci 2010-08-30 10:48:49

回答

0

如果沒有編寫自己的代碼,您不能手動進行手動編輯 - 或者使用32位操作,然後應用掩碼來限制可用範圍。

它們當然不會比32位操作更快,因爲這就是處理器原生支持的操作。

+0

爲什麼這個.NET庫具有不同速度的20位和30位算術? http://www.complex-a5.ru/polyboolean/index.html – abenci 2010-08-21 11:35:32

+0

@devdept:請**更新**您的問題,以包含**所有**的相關信息。請不要在評論中添加相關事實。 – 2010-08-21 11:37:14

+1

@devdept:這取決於他們正在執行的自定義操作,看起來他們很專業。有可能通過使用20位座標系,在某些情況下可以獲得更高的內存效率。但是你真的不得不問作者。你試圖達到甚麼目的? – 2010-08-21 11:47:13

5

處理器中有arithmetic units,所以使用32位數字操作真的很快。它比任何你可以編寫的代碼都快,因爲它在處理器中是「有線的」。

具有20位數的操作可以用模運算來模擬(即mod 2^20)。

2

如何加/減/乘法和只使用20位 ,而不是32位在C# 鴻溝整數?

使用bitmasking零出32位整數的前12位:

int twentyBitSum = (a + b) & 0xFFFFF; 

將這些操作比 32位procision更快?

沒有。硬件本身不支持的大小算術運算是額外的工作。