【電腦01】電腦世界的語言 |為什麼電腦只有1跟0 |秒懂神解釋系列 |

【電腦01】電腦世界的語言 |為什麼電腦只有1跟0 |秒懂神解釋系列 |

本文是《懂 IC》系列第六集。

接續懂 懂 IC 產業結構競爭關係,《懂IC》系列持續大家介紹 IC 硬體核心基礎概念。

世界上只有 10 種人,一種是懂二進位、一種是懂二進位。

看完這篇文章,保證通通搞懂以上問題、對科技產業基本名詞有點概念吧!這邊開始,我們要來討論一個問題──既然電腦是一台計算機,計算機什麼能夠「計算」?它只是一堆電路串一起嗎?要達到一台機器能夠「計算」,需要有哪些條件呢?關於這個問題,我們可以進一步問題拆解成三個想法去解決它:電路有辦法表示人類認知中數、小數,是負數數字嗎?如果連該如何電路中表示數字知道,提要進一步做運算了。

找到了表示數字方法後,接下來看看該如何利用電路來進行運算。

要怎麼做加法,是減法、乘法、除法呢?是人類計算方法運算嗎?知道數字該如何表示運算方法後,要怎麼實作出一個真能運算電路呢?啦,接下來讓我們一一來討論吧!其説是數字,不如稱作兩個狀態,比如「ON」、「OFF」電燈開關。

想像一台計算機零件電路上佈了電線、每條電線有著兩種狀態電壓──超過電壓 (閥值) 時、稱為「H」(高位準),於稱為「L」(低位準)。

所以有研究人員提出了一種改良方法叫「旋轉編碼」(Rotating Code):來説,上一個鹼基如果是 A,那麼下一個鹼基只能是 C、G、T,其中 C 代表0,G 代表1,T 代表 2;如果上一個是 C,下一個只能是 G、T、A,其中 G 代表0,T 代表 1,A 代表 2,以此類推。

電腦01 Play

要表示「L」和「H」兩個狀態,我們使用了「0」與「1」來表達;這裡 0、1 並不是數值,而只是象徵符號而已。

顯然地,和製造具備  2 個狀態電子零件相比,要製造出具有 3 個狀態以上電子零件,工藝上會困難(因為一條電線上電壓,有電壓和電壓兩種電壓),因此我們選擇前者來造計算機。

一天到晚聽到「你電腦是 32 位元處理器還是 64 位元處理器 」這個問題嗎?其實 CPU 架構,有 32 bit 或 64 bit 數量匯流排 (Bus)。

想要知道倉庫有多,得知道一個格子多,得知道格子有幾個?想像我們這些格子上面拉電路線、每條線有「通電」和「電」(或電壓、電壓)兩種選擇,「1」和「0」。

64 位元處理器,匯流排從 32 根線變成 64 根線,資料傳輸容量會變得。

既然我們是電線上 0 和 1 來表示,運算時、故只能使用這兩個數字而已,「二進位制」。

不過這並代表要儲存資訊話,得二進位噢!電腦之所以會採用二進位,只是因為建構出來電路計算機。
電腦01

想想看,如果我們不用電路,而是改用 DNA 來儲存資料、作造記憶體或硬碟技術,會二進位嗎?什麼, DNA 當硬碟?沒錯!DNA 是一種優良儲存介質——DNA儲存資料優勢是 DNA 可以保存數千年,會像CD 或錄影帶過一陣子會消磁,而且 DNA 可以堆疊儲存、能帶來儲存量。

近年來用 DNA 來作為儲存介質呼聲,有一個專案負責研究開發 DNA 硬碟。

DNA 硬碟做事, 0 和 1 資料轉換 4 種核苷酸 ATCG。

但如果要這樣儲存話,你可以考慮採用四進制,比如 DNA 鹼基 ATCG,可以使用 00 代表 A、01 代表 C、10 代表G 、11 代表 T。

不過有人後來表示説若四進位,鹼基出現,比如 TTTTTTTT 時,會導致偵測讀取時候出問題。

如果直接四進位編碼成DNA,會出現鹼基,導致讀取出錯。

所以有研究人員提出了一種改良方法叫「旋轉編碼」(Rotating Code):來説,上一個鹼基如果是 A,那麼下一個鹼基只能是 C、G、T,其中 C 代表0,G 代表1,T 代表 2;如果上一個是 C,下一個只能是 G、T、A,其中 G 代表0,T 代表 1,A 代表 2,以此類推。

這種方式進行編碼,任意一個鹼基和前後鹼基是。

但是這樣,只能同時使用四種鹼基中三種來表示狀態,多只能三進位。

啦我們扯了。

其實 Lynn 此處要表達意思只是——世界觀(糖果星人採用 7 進位制)、或應用中,是理想解決問題辦法,來決定你要採用什麼進位方法。

世界上只有十進位啦!此直接下個結論:我們要用「0」和「1」來表示數字,和做計算儲存資料,「二進位制」運算。

(這樣啦),那這個二進制是什麼意思呢?講個笑話,如果看得懂讀者可以省略本文這段介紹了——「世界上可以分成 10 種人,懂二進位人,以及懂二進位人。

」如果您看不懂話!這是因為你只是人類世界人,我們人類世界園和小學時期,得學十進位加減乘除和數點。

既然你想要進入數位資訊世界,要開始學習數位世界數字是怎麼表達~讓我們當自己是移民過來外星物種,數位世界小學開始學起吧!(不要告訴我説你想移民火星,學當地數字表達方法不肯吧!)因為遇到十會進一位,所以 6 是 10 零次方、 20 是 2 乘上 10 一次方、400 是 4 乘上 10 二次方。
電腦01

利用這樣思考方式,讓我們來看看什麼是「二進位數」:若二進位數「1101」換成十進位數,「8 + 4 + 0 + 1 = 13」。

所以什麼叫做「世界上只有 10 種人,一種懂二進位、一種懂」呢?意思「 1 乘 2 1 次方 + 0 乘 2 0 次方 = 2」既然如此,那浮點數(數點)該怎麼辦呢?讓我們再回過頭來想十進位「數點」是怎麼運算:,那有負數呢?電腦該如何表示一個數是正數、還是負數?想想看,如果只有這樣表示話,會發生什麼樣問題呢?比如説:這個用來符號數字是要擺在左邊右邊?有, 「0」有「+ 0」和「- 0」 兩種表示了嗎?如果程式設計人員一點,發生錯誤。

要解決這問題有個辦法,取「補數」。

想想看十進位數中 「40 + (-40)」 和 「40 + (60)」結果,「00」和「100」。

若只看後兩位數,40 + (-40) 和 40 + (60) 計算結果是不是一樣?因為二個位數計算上,不用管超過二個位數數字,所以多出來 1 當作沒看到,這電腦科學上稱為溢位 (Overflow)。

而 40 和 -60 關係,我們可以稱「60 是 40 於 100 補數」。

它使用原始基本語言,只有兩個字:數字「0」和「1」。

電腦01 Play

延伸閱讀…

電腦

什麼是電腦?為什麼電腦只有1跟0? 【秒懂神解釋系列】

於二進位數來説,於只有 0 和 1,要做補數,所有數字反轉;比如數字中 0 改成 1、1 改成 0 可以了。

而這個補數,相當於原數字負數。

比如要表達「6」這個數字,「0110」(6 二進位數)取補數、變成「1001」。

「1001」代表「-6」了!這種表示負數方法和「符號大小法」,稱為「1’s 補數法」。

,但這樣 0 如果是「000」、取補數 -0 會是「111」,還是沒有解決 0 有 +0 和 -0 兩種結果問題啊?(000 和 111 代表 0 奇怪了吧~)改善,所以我們進一步數字加上 1 做修正。

這種「1’s 補數法」進一步修正,我們稱為「2’s 補數法」。

這樣要表示 0 話,只有 000 一種寫法了;負數會 -1 開始計算。
電腦01

一下這三種能表示負數方法,不管哪一種、正數表示方法是;地方於負數地表示法。

於「2’s 補數法」沒有「符號大小法」與「1’s 補數法」缺點,所以現在電腦全都是採用「2’s 補數法」來表示負數。

笑話説:「世界上只有 10 種人,一種懂二進位、一種懂」現在開始,大家是懂二進位人了!既然我們知道計算機中表達數字要二進位數,那麼該如何二進位數做加減乘除運算呢?和十進位數做法是嗎?一位英國數學家布林(Boolean) 1854 年發表了兩篇論文,奠定一種新型學科基礎——「布林代數」,是電腦科學領域基本學科,計算機電路設計提供了理論基礎。

(整死一堆唸電資科系學生…黑特程度可能是和牛頓/萊布尼茲發明積分有得)那麼布林代數中運算,是不是和十進制一樣四則運算呢?非,布林代數用是「邏輯運算」推導,IC 電路使用用布林代數原理做「邏輯電路」。

回答這個問題之前,、我們要 IC 內部構造有些基本認識:翻開德州儀器開發 TTL 74 系列 7432 晶片電路圖,可以看到中間記號表示邏輯電路,且每個記號連接到 IC 接腳(PIN)。

什麼是 IC 接腳(Pin)?IC 晶片上會有許多接腳,能輸入和輸出數位訊號。

所以上面電路圖中每個有標數字地方,是一個接腳噢!(重申一次,這張圖 IC 晶片內部電路圖!!!)電腦會説話,可是它有自己語言。

它使用原始基本語言,只有兩個字:數字「0」和「1」。

延伸閱讀…

2.1 電腦世界的語言: 1 跟0 的機器語言- 基礎教材

為什麼電腦是只有0 與1 的世界?世界上只有10種人

這兩個數字配合「二進制」,構成密碼、解碼方式,能讓電腦儲存和表達世上所有語言、文字、聲音、影像資料,並人類溝通!甚麼是二進制?讓我們大家熟悉「十進制」説起吧!我們運算時常用「十進制」,逢「十」進位。

「1111」例,右邊開始,左邊數:第一個「1」代表「1」;第二個「1」代表「10」;第三個「1」代表「102次方」,即「100」;第四個「1」代表「103次方」,即「1000」。

……如此類推。

換言之,十進制中,「1111」代表「1 + 10 + 100 + 1000」。

「二進制」,是逢「二」進位記數和運算方式。

「111」例,右邊開始,左邊數:第一個「1」代表「1」;第二個「1」代表「2」;第三個「1」代表「22次方」,即「4」;第四個「1」代表「23次方」,即「8」。

……如此類推。

換言之,二進制中,「1111」代表「1 + 2 + 4 + 8」,即十進制中「15」!人類要電腦表達十進制中「15」,得它拆解並轉換成二進制中「1111」;電腦要二進制中「15」解碼,變成十進制中「15」,人類明白。

人們後來發展了「字符編碼」系統,每個字元(如中文字、英文字母、符號)編排一個代表數字。

這樣,電腦可以依循同一個解碼方式進行溝通,表達數字以外意思了!「ASCII編碼系統」是全球使用電腦編碼系統,每個字元對應一個數字,例如「A」數字「65」代表。

(試試看,利用「ASCII編碼」,將「1001000」和「1001001」兩組二進制數字解密!答案文末。

)可以想像,我們每天使用電腦、智能裝置時,這個解碼過程要進行多少次嗎?我們不用每次自行解碼,是因為有另一些電腦使用語言,指示電腦背後我們處理這個花時間運算、轉換過程。

這種階語言,叫做「程式語言」,或是「編程語言」。

程式,指示電腦進行每一步動作指令。

電腦會像人思考、會運算,因此我們要指令表達得而,電腦懂得執行。

使用程式語言,能這些指令表達電腦知道,讓它跟隨命令行動。

指令要,首要是整件工作細分不驟,並以正確次序排列出來,這個合乎邏輯順序叫做「序列」。

電腦懂得複執行指令,需要人手介入,這個運作過程就算「自動化」了。

自動門例,它運作步驟序列是這樣:為何自動門懂得何時打開、何時關上呢?因為指令中「如果」,描述了條件(3.和4.),指示自動門分支條件(有人/沒有人),選擇作出相應行動(打開/關上)。

當10秒過後,沒有人來到門前,自動門關上了,回到1.狀態,直至有人來到門前,會打開(2.),然後複根3.和4.進行條件選擇,整個過程形成一個循環。