[心得]使用Shift移位加快浮點運算

看板C_Sharp (C#)作者 (tomex_ou)時間19年前 (2006/04/20 15:55), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/2 (看更多)
電腦處理四則運算時,唯獨在除法及浮點運算會比較費力 針對除法,我們可以倒置為乘法, 但對於浮點運算,怎麼辦呢? 答案就是把它替代為一個整數再右移位。 例如,一個浮點數 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
呵 Shift真是完全沒用過呀...
04/20 16:21, 1F

04/20 16:39, , 2F
換得了速度 但是喪失了精準度喔~~[不過不care精準度也是ok]
04/20 16:39, 2F
文章代碼(AID): #14Hpven2 (C_Sharp)
文章代碼(AID): #14Hpven2 (C_Sharp)