看板 C_Sharp 關於我們 聯絡資訊
電腦處理四則運算時,唯獨在除法及浮點運算會比較費力 針對除法,我們可以倒置為乘法, 但對於浮點運算,怎麼辦呢? 答案就是把它替代為一個整數再右移位。 例如,一個浮點數 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
liunate:呵 Shift真是完全沒用過呀... 04/20 16:21
HsiaoM:換得了速度 但是喪失了精準度喔~~[不過不care精準度也是ok] 04/20 16:39