計算機基礎簡介

光電科學史 發佈 2020-01-07T10:26:37+00:00

計算機簡史計算機是現代一種用於快速計算的電子計算機,它具備數值計算、邏輯計算和存儲記憶能力,能夠按照設定的程序規則自動、高速處理數據的現代智能電子設備。我們一般稱為「電腦」。 計算機是在20世紀由「約翰·馮·諾依曼」發明,「約翰·馮·諾依曼」也被稱為「計算機之父」。

計算機簡史

計算機是現代一種用於快速計算的電子計算機,它具備數值計算、邏輯計算和存儲記憶能力,能夠按照設定的程序規則自動、高速處理數據的現代智能電子設備。我們一般稱為「電腦」。

計算機是在20世紀由「約翰·馮·諾依曼」發明,「約翰·馮·諾依曼」也被稱為「計算機之父」。

計算機大概經歷以下幾個更新換代階段(參考百度百科,了解即可):

第1代:電子管數字機(1946—1958年)

硬體方面

邏輯元件採用的是真空電子管,主存儲器採用汞延遲線電子管、陰極射線示波管靜電存儲器、磁鼓、磁芯;外存儲器採用的是磁帶。軟體方面採用的是機器語言、彙編語言。應用領域以軍事和科學計算為主。

特點

體積大、功耗高、可靠性差。速度慢(一般為每秒數千次至數萬次)、價格昂貴,但為以後的計算機發展奠定了基礎。

第2代:電晶體數字機(1958—1964年)

硬體方面

作業系統、高級語言及其編譯程序應用領域以科學計算和事務處理為主,並開始進入工業控制領域。

特點

體積縮小、能耗降低、可靠性提高、運算速度提高(一般為每秒數10萬次,可高達300萬次)、性能比第1代計算機有很大的提高。

第3代:集成電路數字機(1964—1970年)

硬體方面

邏輯元件採用中、小規模集成電路(MSI、SSI),主存儲器仍採用磁芯。軟體方面出現了分時作業系統以及結構化、規模化程序設計方法。

特點

速度更快(一般為每秒數百萬次至數千萬次),而且可靠性有了顯著提高,價格進一步下降,產品走向了通用化、系列化和標準化等。應用領域開始進入文字處理和圖形圖像處理領域。

第4代:大規模集成電路機(1970年至今)

硬體方面

邏輯元件採用大規模和超大規模集成電路(LSI和VLSI)。軟體方面出現了資料庫管理系統、網絡管理系統和面向對象語言等。1971年世界上第一台微處理器在美國矽谷誕生,開創了微型計算機的新時代。應用領域從科學計算、事務管理、過程控制逐步走向家庭。

特點

機體積小,價格便宜,使用方便,但它的功能和運算速度已經達到甚至超過了過去的大型計算機。

計算機結構簡述

現代計算機結構一般有兩種,分別是馮·諾依曼結構和哈佛結構。下面是馮.諾依曼型結構圖:

下面是哈佛結構圖:

馮·諾依曼結構和哈佛結構的區別:

馮·諾依曼結構和哈佛結構最大的區別在於馮·諾依曼結構採用程序指令和數據統一編址,使用同一條總線進行傳輸;而哈佛結構程序指令和數據是分開編址(兩個存儲器),同時分開總線進行傳輸;由於編址不同,所以馮·諾依曼的數據和指令位數必須相同,而哈佛結構的數據和指令可以不同;理論上哈佛結構具有較高的執行效率。

馮·諾依曼結構和哈佛結構應用場景:

雖然哈佛結構具有較高的執行效率,但哈佛結構並不是用來替代馮▪諾依曼的,它們在不同的場景下各有千秋;一般來說,馮▪諾依曼結構主要應用於通用計算機領域,哈佛結構主要應用於嵌入式計算機領域。

二進位簡述

說到計算機不得不了解一下二進位,因為計算機是由邏輯電路組成,通常只有兩個狀態,開(1)和關(0),所以目前市面上計算機基本都是採用二進位數來存儲和運算的。

二進位的基數為2,右邊稱為低位,左邊稱為高位,進位規則是從右邊位數開始計算「逢二進一,原位為0」,借位規則是「借一當二」,例如:

  • 1+1=10,右邊第一位開始計算,因為1+1=2,逢二進一,原位為0後就是10
  • 101+1=110,右邊第一位開始計算,因為1+1=2,逢二進一原位為0後就是110

除了二進位外,還有類似十進位(逢十進一)、八進位(逢八進一)、十六進位(逢十六進一),下面描述各個進位基本數字:

  • 二進位:0、1
  • 十進位:0、1...9
  • 八進位:0、1...7
  • 十六進位:0、1....9 A.... F(十六進位A代表10,B代表11...F代表15)

不同進位之間任意兩個都可以進行轉換,但是要記住計算機存儲只能是二進位,如果要處理或存儲其它進位則一般需要轉為二進位。下面給出一些進位之間轉換規則:

十進位轉二進位,除2取余法

十進位轉八進位,除8取余法

十進位轉十六進位,除16取余法

二進位轉十進位,從右邊開始從0開始第n位數值乘以2的n次方

八進位轉十進位,從右邊開始從0開始第n位數值乘以8的n次方

十六進位轉十進位,從右邊開始從0開始第n位數值乘以16的n次方

八進位轉十六進位可以先將八進位轉為二進位或十進位,然後再將八進位或十進位轉為十六進位

下面簡單舉個二進位和十進位之間轉換的例子:

1、十進位89轉為二進位

如果是十進位轉為八進位,則是除以8,如果是十進位轉為16進位則是除以16,其它規則不變。

2、二進位1011001轉為十進位

如果是八進位轉為十進位則2的n次方則改為8的n次方,如果是十六進位轉為十進位則2的n次方則改為16的n次方,其它規則不變。更多進位相關的知識有興趣可以閱讀計算機基礎專業相關書籍。

二進位數據又是如何在磁碟上存儲的呢?要回答這個問題可能要寫半本書才能詳細講清楚,這裡為了便於理解只做個簡單抽象的講解。對於機械硬碟來說,磁碟內部一般有控制電路板、傳動手臂、轉動軸、主軸、馬達、碟片(一個或多個)、讀寫磁頭(每個碟片一個)等;其中碟片被分為扇區和磁軌,數據就是存儲在碟片的扇區的磁軌中。

存儲方式是通過在碟片上下表面都塗有磁性材料,每個磁軌有獨立的兩極方向,控制器控制讀寫磁頭來改變每個磁軌單元內的磁體方向來表示一個二進位單元(比特Bit),例如N極和S極分別代表0和1。

這裡只是高度抽象磁碟存儲原理,實際磁碟工作原理是非常細緻和複雜的,更多關於磁碟存儲原理相關有興趣可以閱讀計算機存儲原理相關書籍。

存儲單位

存儲單位是一種計量單位。指在某一領域以一個特定量或標準做為一個計數點。計算機內部都是採用二進位進行存儲、運算和處理數據的,其中數據存儲的單位有位(Bit)、字節(Byte,B)、字(Word)、KB、MB、GB、TB等,下面是每個單位的描述

位(Bit):二進位數一個數位,0或1,是計算機中最小單位。

字節(Byte):計算機基本單位,1個字節等於8位。

字(Word): 1個字等於2個字節。一個漢字就是2個字節。

KB:1KB = 1024Byte

MB:1MB = 1024KB

GB:1GB = 1024MB

TB:1TB = 1024GB

除了位之外,其它計算機存儲單位都是基於位(Bit)進行換算的。設計不同單位換算是為了更方便閱讀。

編碼表簡述

通過前面我們了解到計算機內部都是二進位,那麼很直接一個問題就來了,我們平時上網或工作是看到和使用的可不是像前面說的一大串的0或1,而是有感情的文字,栩栩餘生的圖片和視頻等,難道這些不是存儲在計算機裡面的?這個我們就要再了解一個叫做編碼表的神奇設計。

例如我們常常看到的英文單詞或英文符號是由ASCII (American Standard Code for Information Interchange: 美國信息交換標準代碼)編碼表對照出來的,下面是截取部分ASCII字符編碼表:

上圖可以看到其中大寫字母A對應的二進位為01000001,B對應二進位位01000010。ACSII一般用來表示英文,但是不同國家不同的語言,所以除了ASCII編碼表外每個國家都有一套自己國家語言的對應二進位的編碼表,比如我國中文採用的便是GB(國標)開頭的編碼表:GB2312(共收錄 7445 個字符,其中漢字 6763 個)、GBK(收錄了 21003 個漢字)、GB18030(收錄70000餘個漢字) 等。國家語言我們大概知道是怎麼回事,那麼圖片又是怎麼來的呢?

圖片是通過將不同位置的像素點進行標色形成的,像素抽象理解就像在某個平面上畫了很多小格子;例如圖片 解析度10*10的意思是水平方向每英寸 有 10 個像素點,垂直方向每英寸有 10 個像素點,通過給每個像素點 (小格子)進行標色,再將顏色轉為RGB(RGB是紅藍綠三個顏色簡稱,每個顏色 用8位二進位(2的八次方=256)來表示, RGB 共可以表示256*256*256=1670萬色 ),最後將三個RGB轉為二進位進行保存即可。

最後我們思考一個問題,由於不同國家有不同的編碼,相互通信的時候由於解碼方式不同就會導致亂碼,沒法信息交換這可是一件大事。這時就出現了大名鼎鼎的Unicode萬國編碼來拯救這個難題,Unicode為世界上所有字符都分配了一個唯一的數字編號。Unicode就相當於一張大型映射表,建立了字符與編號之間的聯繫,Unicode收錄的字符高達100多萬個。

由於Unicode被認為存在大量浪費空間的現象,所以實際上Unicode編碼並沒有被網際網路廣泛使用,而真正被廣泛使用的是後來出現的UTF-8,UTF-8是基於Unicode編碼的設計基礎上對浪費空間進行算法優化,直到目前為止UTF-8是網際網路上使用最廣泛的一種傳輸編碼方式。

軟體、開發語言簡述

前面我們簡單講述了計算機重要的知識點,那麼我們通常接觸到的更多的實際都是跟軟體相關的,比如作業系統(文件管理)、表格工具、淘寶、抖音等它們都屬於軟體範疇。那麼軟體在計算機中又是怎麼的一種存在呢?

硬體是計算機最基礎的物理存在,像CPU、磁碟、主板、顯示器、鍵盤、內存條、網卡、顯卡、電源等。這些硬體組成的計算機對外分別提供了不同的基礎種能力(例如運算、存儲),對於我們常人來說怎麼去利用這些能力呢?其實硬體廠商一般都會將硬體的能力通過指令的方式對外提供出來,外部客戶端可以通過指令去使用它們。如果讓每個人都要學習不同硬體的指令集才能使用計算機,那計算機入門門檻也太高了,軟體的出現就是解決這個問題的。另外軟體除了解決這個問題外,軟體還擁有自身的產品價值。

軟體一般分為系統軟體、驅動軟體跟應用軟體,系統軟體(Windows、類Unix)被認為是最基礎的軟體,它統一組合封裝了底層各種不同硬體(CPU、磁碟、鍵盤、顯示器、網卡、顯卡等)的指令集,重新提供了一套新的更加友好和聚合後的系統軟體API。

目前我們接觸最多軟體是應用軟體(淘寶、抖音、表格工具),應用軟體是通過某種開發語言(Java、C、Python)開發出來的。開發語言(Java、C、Python)底層再次封裝了系統軟體的調用重新提供了一套更人性化、可讀性更強的開發語言API和規則供給現有程式設計師去進行應用的開發。

下圖形象的表達了硬體、系統軟體、應用軟體、開發語言之間的關係:

計算機相關知識可以單獨寫好幾本磚頭厚的書,這裡只是簡單的介紹了部分需要了解的基礎知識。如果有興趣深入學習計算機硬體和基礎相關知識可以閱讀相關專業書籍。

關鍵字: