6.4二進位的應用-現代計算機

2021-01-08 文字20

6.1語句與公式

6.2符號的模擬——算術

6.3符號的規則操作——計算

6.4二進位的應用——現代計算機

所有進位的位置記數法原理上等價,實踐中不同進位的記數法有不同的適用性。二進位是用0、1這兩個數字,以及逢二進一的規則來表示所有的數。十進位與二進位相比,十進位的數字長度更短,更容易辨識書寫,另一方面十進位的應用需要掌握比二進位應用更複雜的加法表與乘法表。

二進位的發明追溯至萊布尼茨。萊布尼茨對二進位情有獨鍾,用法國數學家、物理學家拉普拉斯(Laplace,1749.3-1827.3)的話說:「萊布尼茨在他的二進位算數中看到了宇宙創始的原象。他想像1表示上帝,0表示虛無。上帝從虛無中創造出所有實物,恰如在他的數學系統中用1和0表示了...」。這倒是暗合了二進位在現代神奇的應用之旅。二進位的基礎符號0、1,正好可對應邏輯真值的假、真表示,在「邏輯與語法」一節,布爾代數中的與、或、非運算是通過真值表定義,抽象地看,二進位個位上加法運算可以看作與布爾代數同系列的運算,只是算子不一樣且有進位問題。

0、1與現代電子技術裡的電路與電子器件的特性相匹配。1、0可正好對應電路的開與關,電脈衝的有與無,電平的高與低,利用這一特性,技術上可由繼電器實現與門、或門、非門的數字邏輯電路,實現布爾代數運算。利用異或門的數字電路可以模擬出二進位的加法運算,理論上減法是加法的逆運算,乘法運算是連加運算,除法是乘法的逆運算,技術上通過補碼等方法,可以將四則運算都歸為加法運算。

人類神經系統是神經元(神經細胞)通過突觸相互連接成的神經網絡,單個神經元與突觸工作機制也符合二進位的方式:輸入一個信號,神經元或者激活,或者抵制;激活的神經元或者通過突觸向連接臨近神經元輸出一個信號,或者不輸出。這是一個刺激人工智慧研究的描述,這樣概括神經元與突觸的工作,是否漏了其它的要點,是否能支持起神經網絡整體複雜性的解釋,下不了肯定的結論。

二進位的二個基礎符號:0、1,形成了一個基礎的對立,利用這一對立以及線性空間理論上不受限制的位數,我們可以對任意信息用二進位來編碼,比如英文的26個字母或中文的每個字都可以通過ASCII (American Standard Code for Information Interchange)碼或Unicode碼與一個8位或16位的二進數對應,從而每一英文單詞,或中文詞對應一個二進位的編碼。這些信息的二進位編碼,也稱為內碼,同樣可以由電子器件物理地實現,存放於計算機的存儲器

現代計算機由存儲器、運算器、控制器、輸入設備和輸出設備5部分組成,構成下圖的結構:

這個系統經常稱為馮·諾依曼系統((Von Neuman,1903.12-1957.2,美籍匈牙利數學家)。系統實現的是「存儲程序計算機」的思想:

將程序與數據預先輸入存放在存儲器

控制器從存儲器裡逐條取出程序,解析後送入運算器執行

這裡的程序是一個指令集,每一條指令可分為二個部分

· 操作碼

· 操作數地址碼

操作碼就是對應計算機的基本操作,主要就是運算器的運算操作,操作數的地址碼是存儲器的一個地址,對應地址裡存放有操作碼要操作的數。操作碼、操作數地址、地址裡操作數,所有這些最終是以二進位形式告知計算機,再譯成對應的電信號,驅動硬體運行。

運算器又稱算術邏輯單元ALU(Arithmetic Logic Unit),原理上就是前面所說繼電器的數字邏輯電路發展來的,所完成的就是算術四則運算與邏輯運算,配套上還有移位、比較與傳輸操作,以及更多技術實現上的細節。今天計算機的應用遍及各行各業,所處理的問題也越來越複雜,很多領域的程序複雜度與可靠性是人類難以預測與控制的,所有這些應用中計算機主要做的處理最後都是編譯為算術邏輯單元的邏輯、數學計算。

可存儲運行不同的程序,處理不同的問題,體現的是通用圖靈機的概念。實現通用圖靈機還要滿足圖靈完備的要求,簡單地說就是要支持分支與循環的流程處理以及具備足夠的內存。

我們之前說的都是符號,現在說到的是物理的過程與狀態,這是由人設計實現的。設計實現這些物理過程與狀態,起源是對符號操作過程與結果的一種模仿與表現。你也可以把這看作是一種語言形式,符號是繼電器、句型是門電路,語句則是電脈衝經過門電路過程。相對的,原來的語言符號也只是另一種人造的物理過程與狀態,二者區別在於:後者是面向人的理解與操作的,前者是面向機器自動操作,由此細節上二者有更多的不同。如果一個符號表達及其演算過程,可以反映實際的物理的現象A,也可以反映實際的物理過程B,那麼我們也可以利用B的過程來模擬A,忽略可能的誤差,這與符號的過程等價。甚至沒有符號與演算可以用來表現,能確定A與B過程的相似,就可以用B來表現A,實際的例子如風洞。

繼電器、門電路替換了更早的石子、繩結、木珠、繩網、算盤等,計算也從手動機械的操作進步為機器自動的操作,這是一個大的跨越。操作是機器自動執行的,要進行什麼操作還得人告訴計算機。機器本身只懂得二進位,沒人願意輸入二進位碼告訴計算機做什麼,這樣的工作太枯燥,於是人們發展了高級程式語言用來編寫程序。高級程式語言是更接近於自然語言,或接近領域原生的表示方式的程式語言,高級語言編寫的程序通過編譯器或解釋器的解析,翻譯為機器可執行的二進位目標代碼。程式語言是真實在用的人工語言,且數量眾多。高級語言的編程回到用一種人工語言符號來模擬機器物理過程,因此每一實用的高級語言也會要求滿足圖靈完備,即支持分支、循環的語句。各類計算機程式語言的通用語法採用的是巴斯克範式(BNF範式),BNF範式等價喬姆斯基的第2型文法,即上下文無關文法,前面說過,這型語法對應的自動機就是圖靈機。

再來看編譯器的工作。編譯器所做的是分析程式語言編寫的程序,包括詞法、語法的分析,語義的分析(這是常見的說法,是否正確先忽略),其中所用的方法很多與自然語言分析中所用的方法類似。比如將語句分析為語法樹,分析基於給定的文法:G=(N,∑,P,S),從結果來看:語法樹的每一葉子節點對應了終結符集中的一個,每一中間節點對應了非終結符集中的一個,中間節點到中間節點或葉子節點會對應一個產生式規則。編譯器完成分析後,經過優化後生成目標代碼。在這些領域的設計工作,喬姆斯基的形式文法是基礎的理論與工具,並有著良好的應用效果,相比較,它們在自然語言的應用沒有太多的進展。

(作者(LQS)註:連續地閱讀會發現,系列的文章不是對各個問題的解釋,而是新的理解視角)

·

相關焦點

  • 計算機使用二進位
    在日常生活中,我們使用的是十進位,那麼我們為什麼會使用十進位?什麼是十進位?在計算機中我們還使用十進位嗎?
  • 現代二進位計算機,其原理到底是不是從八卦中引出的呢?
    計算機在赫爾曼手中首度接上了電,但電只是用來驅動繼電器進行計算,靠的是電磁鐵的機械動作,而不是電流本身。因此赫爾曼的自動制表機只能算是電力驅動的機械式計算機,仍然不是電子計算機。 計算機要蛻變為現代電腦,必須擺脫機械方式,改用電流本身來做計算。
  • 計算機的語言——二進位,十進位、八進位、十六進位與二進位之間的轉換
  • 6、計算機進位之二進位、十進位、十六進位之間的轉換
    4、進位之間的轉換4.1、正整數的十進位轉換二進位將一個十進位數除以二,得到的商再除以二,依此類推直到商等於一或零時為止,倒取除得的餘數,即換算為二進位數的結果只需記住要點:除二取餘,倒序排列。由於計算機內部表示數的字節單位都是定長的,以2的冪次展開,或者8位,或者16位,或者32位....。於是,一個二進位數用計算機表示時,位數不足2的冪次時,高位上要補足若干個0。本文都以8位為例。
  • 個人總結——二進位、十進位、十六進位轉換的方法
    近期和同事溝通時發現很多小夥伴多進位的轉換不太清晰,所以趁著周末自己總結了一下和大家分享想,下面先了解下定義。
  • 計算機二進位數據是什麼,和十進位有什麼區別?還有其他的進位嗎
    在日常看編程學習資料的過程中, 我們經常看到二進位這個概念,那麼二進位都是什麼東西?我們日常使用的都是十進位的說法,他們之間有什麼區別?是否還有其他進位來表示數據?二進位計算機數據類型計算機中處理的數據有兩類,分別為「數值數據」和「非數值數據」。數值數據,指表示數量的數據,有正負和大小之分,在計算機中的數據以二進位的形式進行運算和存儲。
  • python進位轉換:十進位轉二進位的用法
    我們在學習python時候肯定會碰到關於進位轉換,其實這是非常簡單的,這個就像小學學習數學乘法口訣意義,只要記住轉換口訣即可輕鬆應用,一起來看下具體的操作內容吧~一、python進位轉換dec(十進位)—> bin(二進位)dec(十進位)—>
  • 計算機基礎進位轉換(二進位、八進位、十進位、十六進位)
    1.十進位轉R進位1.1 十進位轉二進位十進位整數轉二進位十進位整數轉換成二進位採用「除2倒取餘」,十進位小數轉換成二進位小數採用
  • 二進位、八進位、十六進位在現實當中有什麼意義?
    二進位二進位的出現是創歷史性的,在古代就有兩儀生四象,四象生八卦,八卦生萬物的說法,世間萬事萬物至少都有兩個狀態,比如生存/死亡、開/關、好/壞、高/低、大/小、長/短、胖/瘦等,這兩個狀態就可以使用二進位的0和1來表示。如今二進位主要運用於電子技術的數字電路當中,就比如計算機,最直接能夠識別的語言就是二進位語言。
  • 二進位,八進位,十進位,十六進位之間的轉換
    什麼是二進位二進位是計算技術中廣泛採用的一種數制。二進位數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進位系統,數據在計算機中主要是以補碼的形式存儲的。
  • 計算機等級考試詳解:十進位數92轉換為二進位數!
    計算機等級考試詳解:十進位數92轉換為二進位數!本經驗由宗龍龍原創,全文共1000多字,閱讀需要14分鐘,如果文中存在錯誤,還請大家多多指點,我會積極改進的!14、十進位數92轉換為二進位數是()。A)01011100B)01101100C)10101011D)01011000(圖片來源於網絡)這一題主要考察的是十進位與二進位的相互轉換問題。如果你不知道如何轉換,沒有關係,我們只需要打開pc電腦端的計算器便可以輕鬆的進行十進位與二進位之間的轉換。
  • 二進位、十進位和十六進位
    二進位就是逢二進位,它的一個位只有兩個值:0 和 1,但它卻是實現計算機系統的最基本的理論基礎,計算機(包括單片機)晶片是基於成萬上億個的開關管組合而成的,他們每一個都只能有開和關兩種狀態,再難找出第三個狀態了(不要辯解半開半關這個狀態,它是不穩定態,是極力避免的),所以他們只能對應於二進位的 1 和 0 兩個值,而沒有 2、3、4......,理解二進位對於理解計算機的本質很有幫助。
  • 二進位、八進位、十進位和十六進位數之間的轉換方法
    十六進位數及十進位數是現代數字系統中常用的四種數制,這幾種進位制計數制之間的對應關係如表1所列。因為日常生活中經常使用的是十進位數,而在計算機中採用的是二進位數。所以在使用計算機時就必須把輸入的十進位數換算成計算機所能夠接受的二進位數。計算機在運行結束後,再把二進位數換算成人們所習慣的十進位數輸出。這兩個換算過程完全由計算機自動完成。②轉換方法十進位整數化為非十進位整數採用「餘數法」,即除基數取餘數。
  • 二進位與十六進位之間互相轉換
    通過上節課的學習,我們掌握了二進位與八進位互相轉換的方法(我們介紹的是421法),我們進行知識遷移,二進位數轉換成十六進位數的方法我們用
  • 現代計算機的特點和計算機的發展
    現代計算機的特點:1 採用二進位代碼表示程序和數據,計算機可直接識別0,1;2 存儲程序控制;3 基本部件有5個:運算器,控制器,存儲器,輸入設備,輸出設備。計算機的發展:1 電子管計算機;2 電晶體計算機;3 中小規模集成電路計算機;4 大規模和超大規模集成電路。運算器主要包括算術邏輯單元(ALU)和寄存器,進行算術運算(加減乘除等)和邏輯運算(與,或,非等)。輸入設備(I):鍵盤,滑鼠器,掃描儀,數位化儀,數位相機,遊戲杆,光筆,手寫輸入板。
  • 計算機二進位祖宗是西方人?中國道教一張八卦圖千年前早已解釋!
    16 1000017 10001從這一天起,現代數學意義上的「二進位」誕生了。…………(這個有點難,牛頓花了點時間才算整明白)牛頓:可這二進位實在太麻煩,完全沒有辦法製造機器運算。萊布尼茨:我這個又不是給你用,我這個是給計算機準備的。牛頓傻眼了:計算機是什麼玩意兒?萊布尼茨:說了你也不懂,那是200多年後的寶貝。牛頓氣得口吐白沫:就不能好好說個話嗎?
  • 進位轉換 二進位轉十進位
    上節課我們學習了十進位轉換成二進位的方法,那二進位轉換十進位是怎麼轉換的呢?
  • 誰發現和選擇了「二進位」這個開啟人類社會數位化信息化大門的金鑰匙?
    圖1. 8、16和32位二進位數可表達的十進位數的範圍現代數學對不同進位記數法已經研究透徹,十進位、二進位和十六進位應用較廣。二進位因每位數字的二值性,四則運算可以簡化為加法和移位兩種運算,以及與邏輯判斷的可對應性,在現代數字電路和計算機中廣泛應用。
  • C語言基礎:二進位和計算機語言雜談(編程新手福利)
    密密麻麻的二進位正因為用電壓的高低可以穩定的表示開和關,所以計算機在計算機中只有兩個狀態來傳遞信息,一個高電平,一個低電平,在計算機中,用1表示高電平,用0表示低電平。二進位文件我們現實生活中用的是的十進位,就是只有0到9這十個數字,計算機只有0和1,它如何表示各種各樣的數字呢,這個時候,人們就定製了一個規則,就說這個規則全世界的計算機都要符合它。
  • 現代計算機文明真是西方人發明的嗎?難以置信是偷來的
    兩年後,1703年,萊布尼茨再次修改了論文,並公開發表,從此二進位開始出現在科學界,這也是現代計算機文明的起始。而在萊布尼茨寫出二進位論文並將其發表之前,其實和中國傳統文化,有過一段時間的深度交流。而直到1703年4月1日,萊布尼茲才收到了白晉的信,僅僅在幾天之後,萊布尼茨將那篇標誌著二進位面世的論文《關於僅用0與1兩個符號的二進位算術的說明,並附其應用以及據此解釋古代中國伏羲圖的探討》遞交到了法國國家科學院。