第一部分
程序結構和執行
我們對計算機系統的探索是從學習計算機本身開始的 它是由處理器和儲存器子系統組成
在覈心部分 我們需要方法來表示基本數據類型 比如整數和實數運算的近似值 然後 我們考慮機器級指令如何操作這樣的數據 以及編譯器如何將C程序翻譯成這樣的指令
接下來 研究幾種實現處理器的方法 幫助我們更好的瞭解硬件資源是如何被用來執行指令 一旦理解了編譯器和機器代碼 我們就能通過編寫最高性能的C程序 來分析如何最大化程序的性能 本部分以存儲器子系統的設計作爲結束
這是現代計算機系統最複雜的部分之一
本書的這一部分將領着你深入瞭解如何表示和執行應用程序
你將學會一些技巧 他們將幫助你寫出安全 可靠並充分利用計算機資源的程序
第二章 信息的處理和表示
我們研究三種最重要的數字表示
無符號unsigned 編碼基於傳統的二進制表示法 表示大於或等於零的數字 補碼two's-complement 編碼表示的是 有符號整數的最常見的方式 有符號整數就是可以爲正或者爲負的數 浮點數floating - point 編碼是表示實數的科學計數法的 以二爲基數的版本
計算機的表示法是用有限數量的位來對一個數字進行編碼 因此 當結果太大以致不能表示時 某些運算就會溢出overflow 另一方面 整數的計算機運算滿足人們所熟知的真正整數運算的定律
浮點數運算有完全不同的數學屬性 雖然溢出會產生特殊的值+∞ 但是一組正數的乘積總是正的 由於精度有限 浮點運算是不可結合的 整數運算和浮點數運算會有不同的數學屬性是因爲他們處理數字表示有限性的方式不同---整數的表示雖然只編碼一個相對較小的數值範圍 但是精確 而浮點數雖然可以編碼一個較大的數值範圍 但是這種表示只是近似的
我們對這部分內容的處理是基於”