什麼是浮點數
6 min readApr 26, 2022
一些計算機概論的課程常常會提到浮點數,英文寫作 floating-point number。本篇文章是近期看的一篇關於浮點數文章的重點整理。他也寫了一個很好的轉換工具讓人更加理解。
電腦裡面都是二進位表示
根據小時候學的計算機概論,電腦裡面的運算都是從記憶體取出資訊,交給 CPU 運算。記憶體與 CPU 內的最小單位儲存單元使用高電壓與低電壓表示兩種狀態,因此電腦實際運算使用的是一堆 0 與 1。理論上一個數字最後都要被變成用 0 與 1 組成的 bits 序列表示。
如何表示小數部分?
我們的目標是用一串二進位 01 組成的字串,表示一個具有小數位數的數字。一個直觀的想法是,如果我們有 32 位元可表示 01 ,那分一半,一半寫整數部分,一半寫小數部分,這樣就可以表示小數了。小數點的部分永遠被固定在 16 位與 17 位的部分。這種無腦表示小數的方式就是 fixed-point number 。
這個方法的缺點是,能表示的範圍比較小。以上的例子使用 32 位,卻因為要用一半的位子儲存小數部分,實際上可以表示的範圍只有 16 位整數所能表示的範圍。此外,處理極微小量也不能很精確表示。因此現代的電腦通常不是用 fixed-point number 這種方式。
科學記號表示法
Floating-point Number 的核心原理是科學記號表示法。先把一個數字換成科學記號表示,判斷正負號,接著換成指數部分 (exponent) 與有效位數部分 (significand) ,擺到對應的位子相乘。