《程序是怎樣跑起來的》第三章讀后感
在此書第二章中,主要講到了數據用二進制的表示方法,但只講的是整數,而第三章講到的則是小數用二進制的表示方法。

如圖,我是這樣理解的,在一組數據中,十進制轉換二進制,拿位權來講,小數點前第n位,是2的n-1次冪(n≥1),而小數點后的轉換則稍微不同,小數點后第n位,是2的-n次冪(n≥1)。出現數據有小數位時,將轉換后的整數部分加小數部分即可得到最后的結果。在初學計算機時,很多人都認為計算機的運算是最準確,不會出錯的,其實不然,比如十進制0.1就無法正確轉換為二進制數,其原因很簡單,我們知道二進制數只由0和1這兩個數字組成,所以如下表,以小數點后四位舉例:

如圖上那行文字所說,小數點后四位的數值,二進制數是連續的,轉換為十進制則不然,圖中第二列可以看出,0——0.625之間的小數就無法用小數點后四位的二進制數來表示,無限增加二進制小數點后的位數,只會得到一個循環小數,最后只會變成近似值,而非精確的數值。
接下來是浮點數的講解,浮點數在C語言中和Java語言中的講解類似,雙精度浮點數用64位寫作double,單精度浮點數用32位寫作float,其實計算機處理數據并不是處理二進制諸如1011.1011這樣的數據,而是以這種浮點數來表示的,浮點數的表示形式分為三部分,符號部分、指數部分和尾數部分,符號部分占用位數都是同樣的一位,由于兩種數使用的位數不同,故雙精度的浮點數表示范圍要大于單精度,這并不難理解。而在計算機運算的過程中,想要保證計算的準確性,就需要正確運用單雙精度浮點數,但運用此浮點數難免也會出錯,避免的方法作者講了兩種,我認為后者的方法更為巧妙,將小數擴大倍數為整數,在計算結果出來后再縮小相應的倍數即可。
而在本章中介紹的EXCESS系統和正則表達式,我還是沒太能理解。
浙公網安備 33010602011771號