若要求 abs(x),令 tmp = x >> 63 ,return (x^tmp)-tmp。要注意不適用於 64 bit 的最小整數。
知道 fixed point 嗎?相較於 floating point,這樣的機制有何優缺點呢?知道真實世界如何運用嗎?
fixed point number 是定點數,相比浮點數來說用固定位數表示小數點後的值。 fixed point number 可以視為整數,因此可以在沒有 FPU 的處理器上執行。由於是使用固定位數表示精度,因此遇到像是 tan() 這種函數時在邊界會無法正確表示數值。實際應用上可以用在 3D 遊戲的算繪引擎,例如 DOOM。
這門課還讓我有另一個大收穫,就是培養實事求是的態度。老師平常就要求我們讀第一手資料,我們在解釋程式行為時必須有憑有據(規格書),要掌握程式行為,同時考慮各種安全上的議題。以往我寫C的程式總是要求能動就好,有不清楚的地方也只會用 printf 隨便看看(因為從現在看來這甚至不叫檢查);現在我會在有問題時試著查規格書的相關規範,同時試著用一些 linux 的系統工具來驗證我的推論。
最後,這門課其實還有非常有趣又讓人受用的一點,就是老師會透過各種小故事(或者是嘴炮)、邀請知名外商公司的工程師,告訴我們未來可以走的方向(關鍵字),以及一些面試的要點。印象深刻的是其中一次 Google 工程師有提到,要進 Google只要基礎夠好、專業領域深入、履歷有些亮點加上英文能力夠就能進。 這讓我在審視自身能力時,觀察的角度跟以往有很大的不同。