[心得]使用Shift移位加快浮點運算
電腦處理四則運算時,唯獨在除法及浮點運算會比較費力
針對除法,我們可以倒置為乘法,
但對於浮點運算,怎麼辦呢?
答案就是把它替代為一個整數再右移位。
例如,一個浮點數 a = 0.1234
如何換算成shift運算(以變數b來代替)呢?
1.a先乘上2^20次方值。
f = 0.1234 * 1024 * 1024 = 129394.28
2.由於shift只能針對整數作運算,四捨五入f值:
i = 129394.28 = 129394
3. i值右移20位,129394 >> 20 即等於 0.1234
所以 a = 0.1234 = 129394 >> 20 = b
我用100萬筆模擬運算求運作計算時間,
以P4-1.6 Centrino CPU為例,發現使用b值會比用a值時間節省1倍
而且b值的cpu使用率也大概為a值為2/3而己。
假設你從事數學公式程式寫作,shift的技巧不可不知呀!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.78.132.15
推
04/20 16:21, , 1F
04/20 16:21, 1F
→
04/20 16:39, , 2F
04/20 16:39, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章