1. 程式人生 > >《編碼隱藏在計算機軟硬體背後的語言》讀感

《編碼隱藏在計算機軟硬體背後的語言》讀感

  如果把有關JAVA這類的書據比喻成武俠小說中的擒拿手,SHH比喻成降龍十八掌,那麼《編碼隱藏在計算機軟硬體背後的語言》這本書無疑是計算機行業的內功心法,讓人能從最簡單的資訊產生,編碼再到邏輯閘,再到更復雜的加法器,暫存器,乃至於計算機的產生有了詳細的瞭解,看到這本書時,有一種忍不住的衝動,再床上跳躍了掐裡,甚至有種親手動手組裝一臺計算機的衝動(當然這太不可能,畢竟用繼電器做計算機你得先有幾百平米的房間><中國的房價,淚崩中)。

  我們都知道的資訊的單位位元,這是個很神奇的東西,單獨的0或1都不能描述一個資訊,而當他們組合在一起,可以成資訊的最小載體。而不論是布萊葉盲文還是摩爾電碼,實際上都是對我們的資訊以位元的形式進行了編碼,而當我們拿到這段編碼再根據其規則,進行解碼就可以得到相應的資訊,這種編碼方式有利於資訊的傳遞,不論是黑夜中的燈光,還是旗幟訊號,還是電流的高低,波形的大小,都是以一種規則描述著資訊。

  計算機是如何組成的,其實是一種原本用於進行電報傳輸時,增強訊號的一種裝置,叫做繼電器,繼電器一點也不神祕,其實就是電生磁,用一個開關使繞有線圈的鐵棒帶有磁性,來帶動另一個開關,單獨的一個繼電器可能並沒有用處,但是當兩個繼電器以串聯方式連線,那麼也就是隻有當兩個開關都開啟時,電路才會有電,也就是1 1 為 1,這就是與門,而當串聯時成為或門。通過不同的方式還可以組成異或門,或非門,與或門,反相器(其實就是取反,也可以看成一種門),這就是我們計算機最基礎的東西,通過他們可以再組成暫存器,譯碼器,加法器等。作者詳細的描述了計算機每一個部分的構成,過去學計算機組成原理時,微控制器部分,只記得跟著老師的步驟來按按這個,按按那個,然後就加到一起了,現在知道原來背後都是通過這些來實現的,我就像個買到新玩具的孩子,高興壞了。

  之後又說明了怎樣進一步的實現自動化,就是將指令也儲存的儲存器中(可以看成現在的記憶體),把指令儲存在某一個地址,我們就可以通過取某個地址來得到指令,然後來執行這這段指令,彙編也就是如此誕生,通過組合語言我們可以實現乘法和除法,也就是讓機器執行多次向加,這是數學演算法的範疇了。組合語言是機器碼和語句相對應的語言,其實就是增強了可讀性。作者還講了萬千寵愛於一身的C語言是怎樣誕生的,讓我這個一直以為C語言是哪來寫printf什麼什麼的人哭混在了廁所,它是跟硬體打交道的,而不是隻是向螢幕輸出字元。

  作者還進一步的向我們展示了ASCII編碼,它是一種七位編碼,不過用了8位來儲存,一個是8位元,可以儲存256。以及展示了適應中文Unicode編碼,相當於是對ASCII的一種擴充套件,前7位是相同的,而後面則包含其他的字元,這樣就擴充套件到了2的16次方,足夠用來儲存漢字,但相對應犧牲了儲存空間。

  這本書最後的浮點數,單精度與雙精度,單精度為32位,其結構為1 8 23 為什麼叫浮點數,因為小數點是浮動的,就好像一個珠子,在數字中浮動,可以浮動255位,也就是正負127,還有個(-1)s*1.f*2e-127這公式就描述了什麼是浮點數,至於是什麼,看書去吧,就不說了。

  對於圖形化革命,就是控制陰極管發射的黑白畫素,每個畫素也就是1bit,而對於灰度不同的,可以用更多的位元代表一個畫素,而現在的電視則用2個位元組表示一個畫素,也就是2的16次方,這包含了人類所能看到所有顏色,所以計算機圖形化其實需要是硬體的支援,最主要的是記憶體空間的增大和廉價化。

  洋洋灑灑,隨想隨寫了這麼多,其實我想說,讀上幾遍這本書不會讓我們能真的做出一臺電腦,甚至都不能組裝出一臺RAM儲存器,也不會讓我們因此學會了彙編或高深的演算法,這本書最大的幫助就是讓人不在畏懼計算機和程式。當我在一行JAVA或C#程式時,我會不由到想到層層的編譯,這最終還是用位元在描述的資訊,是電路間流動的高低電流,這其實就是最大的收穫,勝過解決一個BUG,學會一個演算法,實現一個功能。這也就是這本書能成為經典的原因。(不管是大學剛入學,還是對計算機感興趣,或者工作了都該讀讀這本書)

相關推薦

編碼隱藏計算機軟硬體背後語言

  如果把有關JAVA這類的書據比喻成武俠小說中的擒拿手,SHH比喻成降龍十八掌,那麼《編碼隱藏在計算機軟硬體背後的語言》這本書無疑是計算機行業的內功心法,讓人能從最簡單的資訊產生,編碼再到邏輯閘,再到更復雜的加法器,暫存器,乃至於計算機的產生有了詳細的瞭解,看到這本書時,有

編碼隱藏計算機軟硬體背後語言(一)編碼

Code:The Hidden Language of Computer Hardware and Software 一、編碼 Morse Code:莫爾斯電碼  稱為二進位制碼(Binary Cod

編碼:隱匿在計算機軟硬體背後語言》筆記06

第八章 10的替代品        本章敘述非十進位制的數字系統,主要是8進位制、4進位制、2進位制(下一章將用一章的篇幅講解2進位制),如果你在學習《計算機文化基礎》的時候已經能熟練的進行2進位制、8進位制、10進位制、16進位

編碼:隱匿在計算機軟硬體背後語言》筆記05

第七章 我們的十個數字           首先說明,1-9這些數碼只是一種符號,表示數字的符號,實際上,數字是集合的抽象,如,3個蘋果、3個人等等的集合具有相同的屬性——集合的數量是3,現在人們已經自然而然的使

編碼:隱匿在計算機軟硬體背後語言》筆記04

第六章 電報機與繼電器       電報機的主要部件是電磁鐵和一個合適的開關,其重要之處不僅在於實現了遠距離傳遞資訊,而且,它是使用二進位制傳遞資訊,作者在敘述莫爾斯發明第一臺電報機的時候類比了前幾章提到了瓦倫丁發明盲文時的情況——一開始二者都不

編碼:隱匿在計算機軟硬體背後語言》筆記03

第五章 繞過拐角的通訊          總的來說,這一章是從工程的角度介紹了基本電路的鋪設。         &nb

編碼:隱匿在計算機軟硬體背後語言》筆記02

第三章 布萊葉盲文與二進位制碼 這一章主要解釋了布萊葉盲文的編碼方法,介紹了布萊葉其人,別的沒記住,就記住了他逝世於43歲,天妒英才啊。 這一章的大部分內容用於介紹布萊葉盲文的具體編碼方法,看得我頭都大了,一開始還能勉強記一些,後來就成了一鍋粥,但我知道,正如作者所說,記住具體的內容不是目的

編碼:隱匿在計算機軟硬體背後語言》筆記01

      無意見看到這本書的介紹,感覺不錯,上網搜了前一個版本的電子書,看了5頁,決定,買紙質的,拿到書後更是覺得是本好書,應該認真讀。      寫這篇文章的時候只看完了前3章,個人認為這本書適合

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

這是一本講述計算機工作原理的書。不過,你千萬不要因為“工作原理”之類的字眼就武斷地認為,它是晦澀而難懂的。作者用豐富的想象和清晰的筆墨將看似繁雜的理論闡述得通俗易懂,你絲毫不會感到枯燥和生硬。更重要的是,你會因此而獲得對計算機工作原理較深刻的理解。這種理解不是抽

推薦書籍---豆瓣9.2分---《編碼:隱匿在計算機軟硬體背後語言

書的前半部分講硬體,也是此書的重點,從最基礎的電路開始講起,最後你會發現,計算機就是簡單的電路所構成的(鑽石也是又C構成的,這裡所說的也只是哲學上所說的部分上簡單),跟著作者的思路走,你會發現CPU是怎麼創造出來的(這也是書中的重點),還會了解到主機板、顯示卡、記憶體(memory),也會知道電腦會如何識

編碼-隱匿在計算機軟硬背後語言》第七章我們的十個數字

復雜 抽象 不足 符號 相關 運算 生日 自己 記賬 1.數字當然是我們平常所能接觸到的一種最抽象的編碼。當我們看到數字:3,不需要立刻將它與任何事物聯系起來。我們可能會聯想到3個蘋果或者3個別的什麽…… 2.但是當我們從上下文中得知數字表示的某個孩子的生日、電視頻道、曲棍

編碼-隱匿在計算機軟硬背後語言》第九章二進制

包含 計算 信息 === 特殊 等於 理解 可能 產品 1.美國數學家約翰威爾德特克就意識到隨著計算機的普及,二進制數很可能會在未來發揮更重要的作用。他決定創造一個新的、更短的詞語來代替使用起來很不方便的五音節詞,最終他還是選用了這個短小、簡單、精巧而且非常可愛的詞bit;

編碼-隱匿在計算機軟硬背後語言》第十一章門

任務 理解 布爾代數 發的 開關 需要 代數 溫習 編碼 1.邏輯門與普通的讓水通過或者讓人通過的門是非常類似的,在邏輯學中,邏輯門的工作方式非常簡單-讓電流通過或阻止電流通過; 2.1938年,香農在麻省理工學院完成了那篇題為《繼電器和開光電路的符號分析》的著名論文,在文

後摘抄)《計算機程序設計語言的發展》_王汝傳

思想 結構性 for 完全 由於 保留 處理 邏輯 數據庫管理系統 原文是《電子工程師》裏的一篇文章,以下是部分內容摘抄 第三代計算機語言: Fortran語言 當時主要是用於科學計算 ,它 與匯編語言助記符的本質區別是引入了變量的概 念。它奠定了程序設計語

R語言寫中文編碼方式

    R語言讀寫資料的方法很多,這裡主要是我在使用read.csv/read.table和write.csv/write.table時遇到的一些中文格式編碼的問題。常見的中文編碼方式兩種:GBK(GB2312)和UTF-8。     Windows系統下:     rea

所有計算機編程語言的一句話概括

perl graphic aaa 自定義函數 控制器 動態腳本 數學 函數式 簡單 A+:陣列編程語言,由摩根·斯坦利公司在1980年代在APL的基礎上開發起來的,現在使用GPL授權。 Ada:是一種表現能力很強的通用程序設計語言,它能大大改善軟件系統的清晰性, 可靠性,

用C語言寫數據

cor 數據 and main () term int blog abi //1-5題 #include "stdio.h" typedef struct { char name[10];//姓名 int subject1,subject2,subject3

C語言 寫二進制文件

c 統計 字符串 二進制文件 查找了比較多的資源, 發現沒有辦法把text 文件轉成binary文件僅作為記錄,不過這個例子可以去除換行符。#include <stdio.h> #include <string.h> #define N 255 int main()

C語言寫文件

c/c++char buff[1000]={0}; //以w的方式打開,文件會被清空;文件不存在會創建 //以r的方式打開,文件必先存在,否則會打開錯誤 //+表示同時可讀可寫 FILE *fp = fopen("1.txt","r+"); if(fp) { char *

《深入理解計算機系統》速提問

64位 概述 經歷 實現 故障 相關 不能 提升 轉換 一、計算機系統漫遊 本章通過運行一個hello程序為例,概述了計算機操作系統的運行過程,講述了組成計算機系統的硬件和系統軟件,講到了處理器處理一個程序的過程。 這一章中出現了一個我首次聽說到的詞匯Amdahl定律,該定