序言
前段時間看到couresa上面有南京大學袁春風老師的操做系統課程,因而複習了一下操做系統相關知識,打算把不容易理解的點記錄一下以便之後的溫習回顧操作系統
- 定點數和浮點數概念
首先介紹下最初不容易理解的誤區就是理解字面意思,有種錯覺是浮點數就是帶小數點的數。這是新手容易誤解的地方,定點數和浮點數的關鍵點在於小數點的位置下面介紹概念。
定點數---一個數小數點的位置不會改變也就是是固定的數,好比現實生活中十進制的數字12.34,這樣表示的四位數小數點是在有效位的第二位後面,這種就是定點小數,小數點在固定位置。十進制表示的1234則是小數點在最後一位的後面,這種是定點整數。0.1234這種小數點在有效位以前的是定點純小數。
定點數運算---若是是定點整數運算,2*3相似這種,在計算機中是容易計算的。可是在進制運算中比較麻煩的是定點小數的運算。好比12.34乘以5.6在進制運算中是很是麻煩的,由於計算機沒法記錄一個小數的小數點的位置。爲了解決這個問題就出現了浮點數計數法。
浮點數---任何現實世界中的實數均可以用一種公式表示 X = (-1)^s MR^e ,-1的s次方是s決定正負,M是一個二進制定點小數是實數X的尾數部分。e是一個二進制的定點整數,是X的指數。R是基數,能夠是二、4和16等。計算機中只要肯定s、m、e就能夠肯定X的值,這就是浮點數,相似於十進制中的科學表示法。好比十進制中的-5.0 轉成二進制表示的話 -101.0,用上述公式轉化即爲 (-1)^1乘1.01乘2^2 。
浮點數運算 關於浮點數的運算舉例來說,至關於十進制中1.235.6轉化爲 12310^-2乘以5610^-1。先計算12356,再計算10^-2 * 10^-1。若是這個例子能明白的話,浮點數的計算方式也大概清楚怎麼回事了。因此浮點數的計算解決了定點小數運算時關於小數點位置沒法被記錄的問題。而浮點數的運算部位又能夠用定點數代替,因此計算機中全部的運算均可以用浮點數解決。
- 上述內容部分知識出自《深刻理解計算機系統》和 www.couresa.org 。