2024-2025-1 20241415 《計算機基礎與程式設計》第三週學習總結
作業資訊
這個作業屬於哪個課程 | <班級的連結>(2024-2025-1-計算機基礎與程式設計) |
---|---|
這個作業要求在哪裡 | <作業要求的連結>(2024-2025-1計算機基礎與程式設計第一週作業) |
這個作業的目標 | <溫習鞏固本週所學> |
作業正文 | https://www.cnblogs.com/zhaoshaoning/p/18462751 |
教材學習內容總結
一、馮諾依曼體系
馮諾依曼體系(Von Neumann Architecture)是計算機體系結構的一種基本模型,由約翰·馮·諾依曼在20世紀中期提出。它對現代計算機設計產生了深遠的影響。以下是馮諾依曼體系的主要組成部分及其特徵:
主要組成部分
中央處理單元(CPU)
算術邏輯單元(ALU):進行算術運算(如加減乘除)和邏輯運算(如與、或、非)。
控制單元(CU):負責從記憶體中讀取指令,並控制指令的執行過程,協調CPU內各個部件的活動。
記憶體
主存(RAM):用於儲存正在執行的程式和資料,是可讀寫的臨時儲存。
輔助儲存:用於長期儲存資料和程式(如硬碟、SSD),相較於主存速度慢但容量大。
輸入裝置:用於接收外部資訊,例如鍵盤、滑鼠、掃描器等。
輸出裝置:用於將計算結果輸出到外部,例如顯示器、印表機、音響等。
匯流排系統:用於連線各個元件,負責資料、地址和控制訊號的傳輸,包括資料匯流排、地址匯流排和控制匯流排。
體系結構特徵
儲存程式的概念:馮諾依曼體系允許程式和資料共享同一記憶體空間,程式指令和資料以數字形式儲存,計算機可以靈活執行不同的程式。
線性指令執行:大多數指令是按順序執行的,程式計數器(PC)跟蹤下一條待執行的指令,但可以透過跳轉、分支等指令改變執行順序。
資料和指令的相同表示:在馮諾依曼體系中,程式指令和資料的表示是相同的,即都以二進位制形式儲存在記憶體中。
二、門與電路
邏輯閘
邏輯閘是數位電路中的基本元件,用於實現邏輯運算。常見的邏輯閘包括:
與門(AND Gate):
輸出只有在所有輸入均為1時才為1。
邏輯表示式:A · B(當A和B都為1時,輸出為1)。
或門(OR Gate):
輸出只要有一個輸入為1時就為1。
邏輯表示式:A + B(當A或B至少有一個為1時,輸出為1)。
非門(NOT Gate):
輸出為輸入的反相。
邏輯表示式:¬A(輸入為1時輸出為0,輸入為0時輸出為1)。
與非門(NAND Gate):
輸出為與門的反相。
邏輯表示式:¬(A · B)(只有在A和B都為1時輸出為0,否則輸出為1)。
或非門(NOR Gate):
輸出為或門的反相。
邏輯表示式:¬(A + B)(只有在A和B都為0時輸出為1,否則輸出為0)。
異或門(XOR Gate):
輸出當且僅當輸入有一個為1時為1。
邏輯表示式:A ⊕ B(A和B不相等時,輸出為1)。
組合邏輯電路
組合邏輯電路是由多個邏輯閘組合而成的電路,其輸出僅依賴於當前輸入訊號的狀態。常見的組合邏輯電路有:
加法器:用於執行二進位制加法的電路,如全加器和半加器。
比較器:用於比較兩個數字的大小。
編碼器:將多個輸入訊號編碼成較少的輸出訊號。
解碼器:將較少的輸入訊號解碼成多個輸出訊號。
時序邏輯電路
時序邏輯電路不僅依賴於當前輸入訊號的狀態,還依賴於電路的過去狀態(即歷史)。時序邏輯電路通常使用觸發器(如D觸發器、JK觸發器)實現狀態儲存。常見的時序邏輯電路有:
計數器:用於計數事件的電路,可以是向上計數或向下計數。
有限狀態機:一種根據輸入和當前狀態轉換到下一狀態的模型。
三、資料型別
- 基本資料型別
整數(Integer):
表示沒有小數部分的數字。可以分為有符號(如 -5, 0, 10)和無符號(如 0, 1, 2)的整數。
浮點數(Float/Double):
表示帶有小數部分的數字。浮點數用於表示較大或較小的數值,例如 3.14 或 -0.001。Float 一般為單精度,Double 為雙精度。
字元(Character):
表示單個字元,如 'A', 'b', '1'。字元通常在計算機中以 ASCII 或 Unicode 編碼儲存。
布林(Boolean):
表示真(True)或假(False),通常用於控制邏輯流和條件判斷。
2. 複合資料型別
字串(String):
表示字元的序列,如 "Hello, World!"。字串通常用於表示文字。
陣列(Array):
一組相同型別的元素,按索引進行訪問。例如,整數陣列可以定義為 [1, 2, 3, 4]。
結構體(Struct):
使用者定義的資料結構,允許組合不同型別的資料。例如,可以定義一個結構體來表示一個點,包含 x 和 y 座標。
元組(Tuple):
有序的元素集合,可以包含不同型別的元素。例如,(1, "Hello", 3.14) 是一個包含整數、字串和浮點數的元組。
3. 抽象資料型別
列表(List):
一種可以動態增長、儲存任意型別元素的集合,通常支援插入、刪除操作。
堆疊(Stack):
一種先進後出(LIFO)的資料結構,支援在一端插入和刪除元素。
佇列(Queue):
一種先進先出(FIFO)的資料結構,支援在一端插入元素,並在另一端刪除元素。
字典(Dictionary/Map):
儲存鍵值對的集合,可以透過鍵快速訪問對應的值。例如,{"name": "Alice", "age": 30}。
4. 特殊資料型別
指標(Pointer):
儲存變數地址的特殊資料型別,通常用於動態記憶體管理和資料結構的實現。
集合(Set):
一種不允許重複元素的集合資料型別,通常用於數學運算和去重操作。
教材學習中的問題和解決過程
問題1:馮諾依曼體系是否有其侷限性?
問題1解決:有,具體表現如下:
- 馮諾依曼瓶頸
馮諾依曼架構中,程式和資料共享同一條匯流排(匯流排是連線計算機各個部件的通訊通道)。這導致了資料傳輸速度的瓶頸。隨著程式複雜性和資料量的增加,CPU需要頻繁地在記憶體和處理器之間傳輸資料,從而影響整體效能。
- 序列處理
馮諾依曼體系結構通常是序列處理的,這意味著它一次只能處理一個指令。雖然透過多核處理器可以在一定程度上緩解這個問題,但根本結構的序列特性仍然是其侷限之一。
- 儲存器層次結構
雖然現代計算機透過快取記憶體等機制來提升效能,但馮諾依曼體系仍然面臨著儲存器速度與處理器速度不匹配的問題。記憶體訪問延遲可能導致處理器在等待資料時閒置,降低了效率。
- 程式的靈活性
馮諾依曼體系結構對程式的儲存和執行方式具有嚴格的限制,所有的指令和資料都必須放在記憶體中,並且以順序方式執行。這使得實現某些高階功能(如並行處理和動態連結)變得更加複雜。
- 安全性問題
由於程式和資料儲存在同一空間,惡意軟體可以透過修改程式來訪問或破壞資料,從而導致安全性問題。
- 不適應某些計算模型
例如,某些平行計算模型、量子計算和神經網路計算等,不易直接透過馮諾依曼架構實現。這些模型需要新的架構設計來有效利用其計算能力。
問題2:為什麼說只用或非門就能表示所有計算機所有的邏輯運算?
問題2解決:1. 邏輯運算的基本操作
通常,基本的邏輯運算包括與(AND)、或(OR)、非(NOT)。這些運算可以透過或非門組合實現。透過非門和或門,可以構造出與門:
- 構造與門
與門(AND)的輸出在所有輸入為真時為真。可以透過或非門構造與門,具體方法是:
使用兩個輸入的非門,分別判斷輸入的真值。
將這兩個非門的輸出連線到一個或門。
如果輸入是 A 和 B,則與門可以表示如下:
這意味著,我們首先取 A 和 B 的非,然後將它們作為或門的輸入,再取其非,這樣就得到了與操作的結果。
- 邏輯運算的完備性
透過各種組合,或者與門的構造,能夠獲得所有可能的邏輯運算:
非(NOT):直接使用一個非門。
或(OR):直接使用一個或門。
與(AND):如上所示用非門和或門構造。
異或(XOR)和同或(XNOR):可透過組合實現
透過組合,構造出其他複雜的邏輯運算(如與非、或非等),可以達到表示任何的邏輯形式。
- 實現邏輯電路
只用或門和非門來構建邏輯電路意味著可以採用較為簡單和高效的電路設計。現代數位電路中的基本閘電路設計中,使用“或非”門(NOR)或“與非”門(NAND)作為基本構件也能實現同樣的目的,因為它們也是完備的。
基於AI的學習