预购商品
书目分类
特别推荐
本書從計算機的內部結構開始講起,以圖配文的形式詳細講解了二進位、記憶體、數據壓縮、原始檔案和可執行檔、作業系統和應用程式的關係、組合語言、硬體控制方法等內容,目的是讓讀者瞭解從使用者按兩下程式圖示到程式開始運行之間到底發生了什麼。書中還專設了“如果是你,你會怎樣講呢?”專欄,以小學生、老奶奶等為物件講解程式的運行原理,頗為有趣。 第3版升級了書中用到的軟體產品和開發工具,並在正文和注釋中補充了大量內容,讓初學者更容易理解。對於舊版中頗受好評的硬體相關章節,更新了C語言的樣例代碼。書末附錄關於C語言的內容也升級至最新標準。 第12章新增了Python機器學習的內容,讓初學者能夠輕鬆體驗人工智慧的樂趣。附錄也增加了對Python語言的介紹。 本書圖文並茂,通俗易懂,非常適合計算機愛好者及相關從業人員閱讀。
第1章 對程式師來說,CPU到底是什麼 1 1.1 看一看 CPU的內部構造 3 1.2 CPU是寄存器的集合體 6 1.3 決定程式流程的程式計數器 9 1.4 條件分支和迴圈的原理 10 1.5 函數調用的原理 13 1.6 用基址和變址實現數組 16 1.7 CPU的處理其實很簡單 17 第2章 用二進位來理解數據 19 2.1 計算機用二進位處理信息的原因 21 2.2 二進位到底是什麼 23 2.3 移位運算與乘除運算的關係 25 2.4 便於計算機處理的“2的補數” 27 2.5 邏輯右移與算術右移的區別 31 2.6 掌握邏輯運算的竅門 34 如果是你,你會怎樣講呢? 給小學新生講解 CPU和二進位 38 第3章 計算機在計算小數時會出錯的原因 31 3.1 將0.1累加100次的結果不是10 33 3.2 如何用二進位表示小數 35 3.3 計算機計算出錯的原因 36 3.4 什麼是浮點數 38 3.5 規格化標記法與移碼標記法 50 3.6 用程式來實際確認一下吧 53 3.7 如何避免計算機計算出錯 56 第4章 讓記憶體化方為圓 61 4.1 記憶體的物理結構十分簡單 63 4.2 記憶體的邏輯結構像一幢大樓 67 4.3 指針其實很簡單 69 4.4 用好記憶體先從數組開始 71 4.5 棧與佇列,以及環形緩衝區 73 4.6 在鏈表中添加和刪除元素很容易 78 4.7 用二叉查找樹高效地查找數據 82 第5章 記憶體與磁片的密切聯繫 85 5.1 程式載入到記憶體後才能運行 87 5.2 提高磁片存取速度的磁片緩存 88 5.3 將磁片當成記憶體使用的虛擬記憶體 89 5.4 將記憶體當成磁片使用的固態硬碟 92 5.5 節約記憶體的編程技巧 93 5.6 瞭解一下磁片的物理結構 98 第6章 自己動手壓縮數據 103 6.1 檔是以位元組為單位記錄的 105 6.2 游程編碼的原理 106 6.3 游程編碼的缺點 107 6.4 從莫爾斯碼中發現哈夫曼演算法的基礎 108 6.5 使用樹來構建哈夫曼編碼 111 6.6 通過哈夫曼演算法大幅提高壓縮效率 114 6.7 無失真壓縮與失真壓縮 115 如果是你,你會怎樣講呢? 給喜歡打遊戲的初中生講解記憶體和磁片 119 第7章 程式在怎樣的環境下運行 121 7.1 運行環境 =作業系統+硬體 123 7.2 Windows消除了CPU之外的硬體差異 125 7.3 每種作業系統的API都是不同的 128 7.4 使用原始程式碼進行安裝 129 7.5 在任何地方都能提供相同運行環境的 Java虛擬機器 130 7.6 雲計算平臺提供的虛擬運行環境 132 7.7 BIOS與引導裝入程式 134 第8章 從原始檔案到可執行檔 137 8.1 計算機只能執行本機代碼 140 8.2 看一看本機代碼的內容 142 8.3 編譯器負責翻譯原始程式碼 144 8.4 僅靠編譯無法得到可執行檔 146 8.5 啟動代碼與庫檔 147 8.6 DLL文件與導入庫 149 8.7 運行可執行檔需要什麼 152 8.8 載入時生成的棧和堆 153 8.9 進階問答 155 第9章 作業系統與應用程式的關係 159 9.1 從歷史發展看作業系統的功能 161 9.2 關注作業系統的存在 164 9.3 系統調用與高級編程語言的可攜性 166 9.4 作業系統和高級編程語言對硬體進行了抽象化 168 9.5 Windows作業系統的特點 170 如果是你,你會怎樣講呢? 給喜歡智慧手機的高中女生講解作業系統的功能 177 第10章 通過匯編語言認識程式的真面目 179 10.1 匯編語言和本機代碼是一一對應的 181 10.2 用C編譯器輸出匯編語言原始程式碼 183 10.3 虛擬指令與注釋 186 10.4 匯編語言的語法是“操作碼 操作數” 187 10.5 最常用的movl指令 189 10.6 將數據存入棧中 191 10.7 函數調用的工作原理 192 10.8 被調用函數的工作原理 194 10.9 全域變數和區域變數的工作原理 195 10.10 迴圈的工作原理 199 10.11 條件分支的工作原理 203 10.12 體驗匯編語言的意義 207 第11章 訪問硬體的方法 209 11.1 應用程式是否與硬體有關 211 11.2 負責硬體輸入輸出的in指令和out指令 213 11.3 外部設備的插斷要求 216 11.4 通過中斷實現即時處理 220 11.5 能夠快速傳輸大量數據的DMA 220 11.6 顯示字元和圖像的原理 222 如果是你,你會怎樣講呢? 給鄰居老奶奶講解顯示器與電視機的區別 224 第12章 如何讓計算機“學習” 227 12.1 什麼是機器學習 229 12.2 支持向量機 231 12.3 Python交互模式的使用方法 234 12.4 準備學習數據 236 12.5 查看手寫數字數據的內容 237 12.6 通過機器學習識別手寫數字 239 12.7 嘗試交叉驗證 242 如果是你,你會怎樣講呢? 給常去的酒館的老闆講解機器學習的類別 244 附錄1 親手嘗試C語言 247 C語言的特點 247 變數與函數 248 數據類型 249 輸入、運算、輸出 250 創建和使用函數 252 區域變數與全域變數 254 數組與迴圈 255 其他語法 257 附錄2 親手嘗試Python 261 Python的特點 261 一切皆物件 263 數據類型 265 輸入、運算、輸出 266 創建和使用函數 266 區域變數與全域變數 268 數組與迴圈 269 其他語法 271 後記 273 致謝 273
矢沢久雄 YAZAWA 股份有限公司董事長兼總經理。GrapeCity 信息技術集團顧問。電腦作家之友會會長。曾在某大型電子公司從事過電腦生產,在 Software House 做過程式員,現主要從事軟體發展工作。工作之餘筆耕不輟,從電路到編程語言均有涉及。代表作有《電腦是怎樣跑起來的》《使用C語言學習程式設計的基礎》《征服C++類和繼承》等。自稱軟體藝人。
客服公告
热门活动
订阅电子报