《Code 編碼:隱匿在計算機軟硬體背後的語言》讀書筆記

這本書就是大名鼎鼎的編碼了,先對這本書說下大致的評價吧。

1. 哪怕我是科班學硬體愛好計算機的,但確實這本書讓我有「原來計算機是這樣的」這種驚嘆。

2. 這本書門檻很低,講的非常易懂,最低門檻只要懂繼電器,知道電磁感應就可以看的非常明白。

3. 書中該有的要點面面俱到,但也只是點到為止,當科普讀物可以讀得很大開眼界,但想要每個點都完全明白很難。

4. 尤其推薦理工科大學生閱讀,裡面涉及我上課所學的高數,模電,數電,微機原理。幾乎包括我大學四年除了自動控制原理外的所有課程。看這本書之前我以為我大學課上沒學到什麼有用東西,但看完後很欣慰的發現大學還是有所收穫的。

接下來詳細說說這本書的具體看法:

1. 由於專業的不同,這本書對我而言關鍵點在於「聯繫」二字。

作者從對信息的懵懂認識開始講起,形成莫爾斯電碼,盲文,ASCII等人們統一的編碼。

再用基本的電池,電線,燈泡實現0和1的電路,由兩個繼電器形成與,非門。

再用邏輯門組成有實際功能的門電路,由門電路組成加法器,觸發器,8080等工具。再在這些處理器上實現彙編,C等面向人類的語言。

走了一條從 懵懂的編碼理論 -> 實際的電路 -> 微處理器 -> 面向對象的高級理論 的理論聯繫實際再升華成理論的道路。

2. 由於這本書很偏硬體,有加法器,各種觸發器,鎖存器,上升下降沿,TTL/CMOS,彙編等,而沒有彙編以上的高級語言,所以對於我而言看起來很容易明白,但對於軟體的同學可能會很難。需要你們在紙上一點一點的推理,不過在我看來,在紙上推出一張電路圖實現的功能後發出對前人聰明才智的驚嘆又何嘗不是一種享受呢?

3. 說個小題外話,記得高中時看《三體》,第一部的三體遊戲中有這樣一段描述:

馮·諾伊曼雙手過頂,莊嚴地喊道:「奉聖上御旨,計算機啟動!系統自檢!」

在金字塔的中部,一排旗手用旗語發出指令,一時間,下面大地上三千萬人構成的巨型主板彷彿液化了,充滿了細密的粼粼波光,那是幾千萬面小旗在揮動。在靠近金字塔底部的顯示陣列中,一條由無數面綠色大旗構成的進度條在延伸著,標示著自檢的進度。十分鐘後,進度條走到了頭。

「自檢完成!引導程序運行!操作系統載入!!"

下面,貫穿人列計算機的系統匯流排上的輕轉兵快速運動起來,匯流排立刻變成了一條湍急的河流.這河流沿途又分成無數條細小的支流,滲入到各個模塊陣列之中。很快,黑白旗的漣漪演化成洶湧的浪潮,激蕩在整塊主板上。中央的CPU區激蕩最為劇烈,像一片燃燒的火藥。突然,彷彿火藥燃盡,CPU區的擾動漸漸平靜下來,最後竟完全靜止了,以它為圓心,這靜止向各個方向飛快擴散開來,像快速封凍的海面,最後整塊主板大部分靜止了,其間只有一些零星的死循環在以不變的節奏沒有生氣地閃動著,顯示陣列中出現了閃動的紅色。

當時看得並不十分直觀,看完此書重新回想真是讓人驚嘆。

----------------------------------------------------------

# 《Code 編碼:隱匿在計算機軟硬體背後的語言》

## 莫爾斯電碼 Morse Code

| Word | Code | Word | Code | Word | Code |

| ---- | ---- | ---- | ---- | ---- | ---- |

| A | ·- | J | ·--- | S | ··· |

| B | -··· | K | -·- | T | - |

| C | -·-· | L | ·-·· | U | ··- |

| D | -·· | M | -- | V | ···- |

| E | · | N | -· | W | ·-- |

| F | ··-· | O | --- | X | -··- |

| G | --· | P | ·--· | Y | -·-- |

| H | ···· | Q | --·- | Z | --·· |

| I | ·· | R | ·-· |

## 解碼

![Mprse Code][1]

## 產品通用代碼

UPC,Universal Product Code 俗稱條形碼

特點:

1. 常見由30條不同寬度的垂直黑條紋構成,間隔寬度也不同,共1-4倍四種寬度

2. 前三位101 護線

3. 6組比特串,每串7個比特位,每組都是0-9數字編碼,以0開頭以1結尾,包含奇數個1.

4. 5比特位中間護線,01010 內置式檢錯碼

5. 6組比特串,每串7個比特位,每組都是0-9數字編碼,以1開頭以0結尾,包含偶數個1.

6. 後三位101 護線

7. 故可以正反掃描。

## 超前進位全加器

網上看電路圖大致明白了。

## 二進位減法

一般來說,如果兩個操作數的符號相同,而結果的符號與操作時的符號不相同,這樣的加法是無效的. // 因為溢出了

## 位元組與十六進位

《微軟出版物風格與技術手冊》中明確說明「請勿將十六進位縮寫為hex」 // 容易與六進位搞混

## 存儲器組織

對於8×1RAM這種隨機存儲器,我們只需要改變地址及相關輸入,就可以從8個鎖存器中讀出或寫入需要的數據。相比於其他順序型存儲器,之中存儲器在使用的時候有一定的限制,如果想要讀取地址為101的數據,必須先把地址為100的數據讀取出來。 ??為什麼?對RAM理解不深,不太明白?

## 17章涉及彙編,學得不好,看完彙編回來重看

[1]:oemsivgbf.bkt.clouddn.com


推薦閱讀:

引得市缺字字體編碼方案說明
深度報文檢測基礎之編解碼
iOS KVO crash 自修復技術實現與原理解析

TAG:編程入門 | 編碼 | 書籍評價 |