程序是怎樣跑起來的(第3版)
[日]矢澤久雄
買這商品的人也買了...
-
$320$250 -
$305圖解 HTTP
-
$180計算機是怎樣跑起來的 (How Computer Works)
-
$419$398 -
$607嵌入式系統:硬件、軟件及軟硬件協同(原書第2版)
-
$380$251 -
$528$502 -
$509CTF 安全競賽入門
-
$620$489 -
$534$507 -
$352RISC-V 架構嵌入式系統原理與應用 — CH32V103 單片機編程與項目實踐
-
$880$695 -
$560$437 -
$400$360 -
$356Linux 是怎樣工作的
-
$1,080$820 -
$600$510 -
$350$315 -
$600$468 -
$414$393 -
$419$398 -
$708$673 -
$550$468 -
$760$593 -
$560$442
相關主題
商品描述
本書從電腦的內部結構開始講起,以圖配文的形式詳細講解了二進制、內存、數據壓縮、源文件和可執行文件、操作系統和應用程序的關系、匯編語言、硬件控制方法等內容,目的是讓讀者瞭解從用戶雙擊程序圖標到程序開始運行之間到底發生了什麽。書中還專設了“如果是你,你會怎樣講呢?”專欄,以小學生、老奶奶等為對象講解程序的運行原理,頗為有趣。
第3版升級了書中用到的軟件產品和開發工具,並在正文和註釋中補充了大量內容,讓初學者更容易理解。對於舊版中頗受好評的硬件相關章節,更新了C語言的樣例代碼。書末附錄關於C語言的章節也升級至最新標準。
第12章新增了Python機器學習的內容,讓初學者能夠輕松體驗人工智能的樂趣。附錄也增加了對Python語言的介紹。
本書圖文並茂,通俗易懂,非常適合電腦愛好者及相關從業人員閱讀。
作者簡介
矢沢久雄
YAZAWA股份有限公司董事长兼总经理。GrapeCity信息技术集团顾问。电脑作家之友会会长。 曾在某大型电子公司从事过电脑生产,在Software House做过程序员,现主要从事软件开发工作。工作之余笔耕不辍,从电路到编程语言均有涉及。代表作有《计算机是怎样跑起来的》《使用C语言学习程序设计的基础》《征服C++类和继承》等。自称软件艺人。
目錄大綱
目錄
第 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