大概是計概

OuOb

  • 賴香伊
  • 賴相依
  • 線性相依
  • 阿洛
  • mouyilai
  • lai_dependent
  • 北資一二學術兼公關
  • 丁瑞萱好可愛 >////<

自我介紹

大綱

我會亂寫中文。

計算機的概念

通用計算設備的概念最早由艾倫圖靈於 1937 年提出。他提出所有計算都可以由一種特殊的機器來完成,這種機器現在被稱為圖靈機。他的模型基於人們在參與計算時的行為。他將這些行為抽象為一種計算機器模型。

圖靈模型

在討論圖靈模型之前,讓我們先將電腦定義為資料處理器。根據這一定義,計算機就像一個黑盒子,接受輸入資料、處理資料並輸出資料(圖 1.1)。雖然這種模式可以定義當今計算機的功能,但過於籠統。

在這個模型中,一個計算機(可能數學段考會叫你帶的那種)也可以算做一個計算機。

資料

圖靈模型是一個更好的通用計算機模型。該模型增加了一個額外的元素:程式。程式是一組指令,告訴計算機如何處理資料。

可被編製程式的資料

可被編製程式的資料

可被編製程式的資料

通用圖靈機

通用圖靈機是一種只要提供適當程式就能進行任何計算的機器,它是對現代計算機的首次描述。一台非常強大的計算機和一台通用圖靈機可以計算同樣的事情。我們只需向任何一台機器提供資料和程式,通用圖靈機能夠計算任何可計算的東西。

馮諾伊曼模型

通用圖靈機的計算機會將資料存儲在記憶體中。約翰·馮諾伊曼(John von Neumann)在1944-1945年左右提出,由於程式和資料在邏輯上是相同的,因此程式也應存儲在電腦的記憶體中。

四個子系統

根據馮諾伊曼模型模型建構的電腦將電腦硬體分為四個子系統:記憶體、算術邏輯單元(ALU)、控制單元和輸入輸出。

儲存程式的概念

馮諾伊曼模型指出,程式必須儲存在記憶體中。這與早期計算機的結構完全不同,早期計算機的記憶體中只存儲資料並通過操縱一組開關或改變佈線系統來執行程式。在這種模式下,控制單元從記憶體中獲取一條指令,對其進行解碼,然後執行。

儲存程式的概念

現代計算機的內存中有程式也有相應的資料,意味著資料和程式都應具有相同的格式,因為它們都儲存在記憶體中。它們在記憶體中都以二進制儲存,也就是一串 0 或 1 。

一連串的執行指令

馮諾伊曼模型中的程式是由有限個指令所組成的。在這個模型中,控制單元會從記憶體中取一個指令,將其解碼,然後執行。而這些指令會一個接一個的執行。

數字系統

在位置數字系統中,一個符號在數字中所處的位置決定了它所代表的數值。在這個系統中,一個數字表示為\(\pm (S_{k-1} \ ...S_2S_1S_0.S_{-1}S_{-2}...S_{-l})_b\)
代表的值為
n=\(\pm S_{k-1} \times b^{k-1}+...+S_{1} \times b^{1}+S_{0} \times b^{0}+S_{-1} \times b^{-1}+S_{-2} \times b^{-2}+...S_{-l} \times b^{-l}\)
其中,\(S\)是符號的集合,\(b\)是基底(base)或底(radix)

位置數字系統

十進位系統中,基底為10

而符號為\(S=\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\}\)

十進位系統(The decimal system)

十進位系統(THE DECIMAL SYSTEM)

二進位系統(The binary system)

二進位系統中,基底為2

而符號為 \(S=\{0, 1\}\)

二進位系統(The binary system)

二進位系統(The binary system)

十六進位系統(The hexadecimal system)

十六進位系統中,基底為16

而符號為 \(S=\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F\}\)

其中,A, B, C, D, E, F 分別代表 10, 11, 12, 13, 14, 15

十六進位系統(The hexadecimal system)

八進位系統(The octal system)

八進位系統中,基底為8

而符號為 \(S=\{0, 1, 2, 3, 4, 5, 6, 7, 8\}\)

八進位系統(The octal system)

任何進位制轉十進位

任何進位制轉十進位

十進位轉任何進位制

十進位轉任何進位制

十進位轉任何進位制

十進位轉任何進位制

十進位轉任何進位制

十進位轉任何進位制

二進位制轉十六進位制的轉換

二進位制與十六進位制的轉換

二進位制與十六進位制的轉換

二進位制與八進位制的轉換

二進位制與八進位制的轉換

十六進位制與八進位制的轉換

非位置數字系統

非位置數字系統仍然使用數量有限的符號,其中每個符號都有一個值。但是一個符號在數中所處的位置與它的值無關,也就是每個符號的值都是固定的。要求得一個數的值,我們需要將所有符號所代表的值相加。

在這個系統中,一個數字表示為\(\pm (S_{k-1} \ ...S_2S_1S_0.S_{-1}S_{-2}...S_{-l})\)

代表的值為

n = \(\pm S_{k-1} + ... + S_{2} + S_{1} + S_{0} + S_{-1} + S_{-2} + ... + S_{-l}\)

羅馬數字

休息,是為了不要走路。

資料的儲存

這一節會介紹不同資料是如何儲存於電腦中ㄉ。

電腦中的資料

所有資料類型在儲存於電腦時,都會轉換成統一的表示形式,並在擷取時轉換回原始形式。這種通用的表示方式稱為位元模式。

電腦中的資料

電腦中的資料

數字的儲存

數字在被儲存進電腦記憶體前會先轉換為二進位制,就像前一節講的。但我們還有兩個問題需要解決:

1. 怎麼儲存數字的正負號

2. 怎麼顯示小數點

儲存整數

整數可以看作是小數點位置固定的數字:小數點在最右邊的右邊。因此我們使用定點表示法來存儲整數。在這種表示法中,小數點是假定的,不會儲存。

無符號表示

一個無符號整數是一個大於等於零的整數。

電腦在儲存時會先將其轉為二進位再把左邊補 0

符號及值表示法

符號及值(sign & magnitude)的處理辦法是分配一個符號位(sign bit)來表示正負號:設定這個位(通常為最高有效位)為 0 表示一個正數,為 1 表示一個負數。

符號及值表示法

Text

符號及值表示法

Text

符號及值表示法

Text

二補數表示法

幾乎所有計算機都使用二補數表示法將有符號整數存儲在 \(n\) 位記憶體中。在這種方法中,無符號整數(\(0\) 到 \(2^n -1\))的可用範圍被分為兩個相等的子範圍。第一個子範圍用於表示非負整數,第二個子範圍用於表示負整數,如下圖所示。

二補數表示法

Text

在二補數表示法中最左邊的位數代表正負號,為 0 表示正數,為 1 表示負數。

取一補數

在我們繼續介紹二補數表示法前我們要先介紹兩個操作。第一個是取一補數。這個操作可以用在任何整數 (無論正負)上。這個操作就是單純的把每個 bit 反轉(原本是 0 的變成 1,1 的變成 0 )。

取二補數

第二個操作是取二補數。這個操作分為兩個步驟:

1. 從右邊開始複製每一個 bit,直到複製到一個 1

2. 將其他 bits 反轉(把 1 變成 0,0 變成 1)

另一個取二補數的方法是先取一補數再加一

二補數表示法

Text

二補數表示法

Text

二補數表示法

Text

浮點數表示

總之就是科學記號。

浮點數表示

總之就是科學記號。

標準化

總之就是科學記號。

Excess System

雖然可以用二進位系統來儲存冪,但現在使用了一種新的表示法叫做 Excess System。在 Excess System 中,正整數和負整數都以 unsigned integer 儲存。要表示一個正整數或負整數,需要在每個數字上添加一個正整數(稱為 bias),以便將它們均勻地移至非負數一側。bias 為 \(2^{m-1} -1\),其中 \(m\) 是儲存指數的記憶體位置大小。

Excess System

雖然可以用二進位系統來儲存冪,但現在使用了一種新的表示法叫做 Excess System。在 Excess System 中,正整數和負整數都以 unsigned integer 儲存。要表示一個正整數或負整數,需要在每個數字上添加一個正整數(稱為 bias),以便將它們均勻地移至非負數一側。bias 為 \(2^{m-1} -1\),其中 \(m\) 是儲存指數的記憶體位置大小。

IEEE Standard

IEEE(The Institute of Electrical and Electronics Engineers) 制定了一些儲存浮點數的標準。我們會介紹最常見的兩個,單精度(32 bits)和雙精度(64 bits)。

IEEE Standard

IEEE(The Institute of Electrical and Electronics Engineers) 制定了一些儲存浮點數的標準。我們會介紹最常見的兩個,單精度(32 bits)和雙精度(64 bits)。

IEEE Standard

IEEE(The Institute of Electrical and Electronics Engineers) 制定了一些儲存浮點數的標準。我們會介紹最常見的兩個,單精度(32 bits)和雙精度(64 bits)。

IEEE Standard

IEEE(The Institute of Electrical and Electronics Engineers) 制定了一些儲存浮點數的標準。我們會介紹最常見的兩個,單精度(32 bits)和雙精度(64 bits)。

IEEE Standard

IEEE(The Institute of Electrical and Electronics Engineers) 制定了一些儲存浮點數的標準。我們會介紹最常見的兩個,單精度(32 bits)和雙精度(64 bits)。

文字的儲存

1. ASCII

2. unicode

3. 其他

音檔的儲存

文檔是由可數的字符組成:我們可以計算文本中的字符數,因此文檔是數位資料。而音檔是不可數的,所以音檔是類比資料。即使我們能測量出音檔在一段時間內的所有值,我們也無法將其儲存,因為我們需要無限多的記憶體空間。

取樣

由於我們不能儲存一段音檔的每一個值,我們只選音檔上有限數量的點並記錄其值。

取樣率(Sampling rate)是我們一秒要取多少個資料點來複製此音檔。而一秒 40000 個資料點的取樣率足夠複製一個音檔。

量化

相較於為每個資料點紀錄小數,紀錄 unsigned integer 比較簡單。量化指的是將取樣值四捨五入為最接近的整數值的過程。如果值為 17.2,則可四捨五入為 17。如果值為 17.7,則可四捨五入為 18。

編碼

令 \(B\) 為位元深度 (bit depth),也就是一個資料點有幾個 bit。而我們一秒鐘記錄 \(S\) 個資料點。所以一段音檔的一秒鐘我們需要儲存 \(S \times B\) 個 bits,這叫做位元速率(bit rate),令其為 \(R\)。

 

例如如果我們一秒紀錄 40,000 個資料點,而每個資料點用 16 個 bits 紀錄。

位元速率就會是每秒 \(R = 40000 \times 16 = 640000\) 個 bits。

圖片的儲存

圖片通過兩種不同的方法儲存在電腦中:點陣圖和向量圖。

點陣圖

當我們需要存儲照片等類比圖像時,就會用到點陣圖。照片由類比資料組成,類似於音檔。但不同之處在於資料的的強度(顏色)在空間而非時間上變化。而由類比資料組成代表我們需要對資料進行取樣。不過這種情況下的取樣通常稱為掃描(scanning)。每個資料稱為像素 (pixels (picture elements))。

解析度

就像在音檔取樣一樣,在圖片掃描(scanning)中,我們需要確定每平方公分需要記錄多少像素。圖像處理中的掃描率稱為解析度。如果解析度足夠高,人眼就無法識別複製的圖像中的不連續性。

色深(color depth)

色深代表一個像素要用多少個 bit 來表示,取決於不同編碼技術對像素顏色的處理方式。我們的眼睛有不同類型的感光細胞:有些感光細胞對紅、綠、藍三色(通常稱為 RGB)做出反應,而有些則僅僅對光的強度做出反應。

真彩色(true-color)

真彩色是一種對像素進行編碼的方式,一個像素會用 24 個 bits。每個像素會用 8 個 bits (0~255)來代表紅色的強度(R)、8 個 bits (0~255)來代表綠色的強度(G)、用 8 個 bits (0~255)來代表藍色的強度(B)。

向量圖

點陣圖形有兩個缺點:文件大小太大了而且放大之後看起來破破的。而向量圖的編碼方法是將圖像分解成線條、正方形或圓形等幾何圖形的組合。

 

例如現在有一個半徑為 r 的圓,向量圖會這樣儲存:
1. 半徑 r 和圓的方程式。
2. 圓心點的位置。
3. 描邊線的樣式和顏色。
4. 填充樣式和顏色。

影片的儲存

把影片分成很多張圖然後儲存。

資料的運算

邏輯運算指的是對一個模式中的單個 bit 或兩個 pattern 中的兩個對應 bit 進行相同基本運算的操作。這意味著我們可以在 bit level 和 pattern level 定義邏輯運算。
在 pattern level 進行邏輯運算是 𝑛 位級的同類型邏輯運算,其中 \(n\) 是 pattern 中的 bit 數量。

 

邏輯運算

位元可以取兩個值中的一個: 0 或 1。如果我們將 0 解釋為假,1 解釋為真,我們就可以運用布林代數中定義的運算來操作位元。布林代數是為了紀念 George Boole 而命名的,屬於稱為邏輯的特殊數學領域。

在本節中,我們將簡單介紹四種用來操作位元的位元級運算: NOT、AND、OR 和 XOR。

bit level 的邏輯運算

位元可以取兩個值中的一個: 0 或 1。如果我們將 0 解釋為假,1 解釋為真,我們就可以運用布林代數中定義的運算來操作位元。布林代數是為了紀念 George Boole 而命名的,屬於稱為邏輯的特殊數學領域。

在本節中,我們將簡單介紹四種用來操作位元的位元級運算: NOT、AND、OR 和 XOR。

bit level 的邏輯運算

位元可以取兩個值中的一個: 0 或 1。如果我們將 0 解釋為假,1 解釋為真,我們就可以運用布林代數中定義的運算來操作位元。布林代數是為了紀念 George Boole 而命名的,屬於稱為邏輯的特殊數學領域。

在本節中,我們將簡單介紹四種用來操作位元的位元級運算: NOT、AND、OR 和 XOR。

bit level 的邏輯運算

同樣的四個運算 (NOT、AND、OR 和 XOR) 可以套用在 n-bit pattern上。對於 NOT 運算符號,其效果與將每個運算應用於每個位元相同;對於其他三個運算,其效果與將每個運算符號應用於對應的每對位元相同。

pattern level 的邏輯運算

同樣的四個運算 (NOT、AND、OR 和 XOR) 可以套用在 n-bit pattern上。對於 NOT 運算符號,其效果與將每個運算應用於每個位元相同;對於其他三個運算,其效果與將每個運算符號應用於對應的每對位元相同。

pattern level 的邏輯運算

同樣的四個運算 (NOT、AND、OR 和 XOR) 可以套用在 n-bit pattern上。對於 NOT 運算符號,其效果與將每個運算應用於每個位元相同;對於其他三個運算,其效果與將每個運算符號應用於對應的每對位元相同。

pattern level 的邏輯運算

同樣的四個運算 (NOT、AND、OR 和 XOR) 可以套用在 n-bit pattern上。對於 NOT 運算符號,其效果與將每個運算應用於每個位元相同;對於其他三個運算,其效果與將每個運算符號應用於對應的每對位元相同。

pattern level 的邏輯運算

同樣的四個運算 (NOT、AND、OR 和 XOR) 可以套用在 n-bit pattern上。對於 NOT 運算符號,其效果與將每個運算應用於每個位元相同;對於其他三個運算,其效果與將每個運算符號應用於對應的每對位元相同。

pattern level 的邏輯運算

這四個運算可以用來修改一個 bit pattern

NOT - 清除

AND - 

OR - 

XOR - 

邏輯運算的應用

這四個運算可以用來修改一個 bit pattern

NOT - 清除

AND - 

OR - 

XOR - 

邏輯運算的應用

這四個運算可以用來修改一個 bit pattern

NOT - 清除

AND - 

OR - 

XOR - 

邏輯運算的應用

位移運算會將一串 bits 中的一些 bit 位置改變。可以向左移或是向右移。我們可以將位移運算會將一串 bits 中的一些 bit 位置改變。可以向左移或是向右移。位移運算分為兩個種類:邏輯位移運算(logical shift operations)與算術位移運算(arithmetic shift operations)。

位移運算

邏輯位移操作只能用於無符數字,因為若用於有符數字可能會使正負號跑掉。

邏輯位移運算又分為邏輯位移(Logical shift)和邏輯循環位移(Logical circular shift (Rotate))。

邏輯位移運算

邏輯位移操作只能用於無符數字,因為若用於有符數字可能會使正負號不見。邏輯位移運算又分為邏輯位移(Logical shift)和邏輯循環位移(Logical circular shift (Rotate))。

邏輯位移運算

邏輯位移操作只能用於無符數字,因為若用於有符數字可能會使正負號不見。邏輯位移運算又分為邏輯位移(Logical shift)和邏輯循環位移(Logical circular shift (Rotate))。

邏輯位移運算

算術移位運算假設 bit pattern 是二補數形式的的有符號整數。算術右移用於整數除以 2,而算術左移用於整數乘以 2。

算數位移運算

算術移位運算假設 bit pattern 是二補數形式的的有符號整數。算術右移用於整數除以 2,而算術左移用於整數乘以 2。

算數位移運算

算術移位運算假設 bit pattern 是二補數形式的的有符號整數。算術右移用於整數除以 2,而算術左移用於整數乘以 2。

算數位移運算

算術移位運算假設 bit pattern 是二補數形式的的有符號整數。算術右移用於整數除以 2,而算術左移用於整數乘以 2。

算數位移運算

算術移位運算假設 bit pattern 是二補數形式的的有符號整數。算術右移用於整數除以 2,而算術左移用於整數乘以 2。

算數位移運算

算術移位運算假設 bit pattern 是二補數形式的的有符號整數。算術右移用於整數除以 2,而算術左移用於整數乘以 2。

算數位移運算

當我們要做減法時,電腦會將其轉為加法,但將要減的那個那個數字做二補數。

二補數表示法整數的算術運算

當我們要做減法時,電腦會將其轉為加法,但將要減的那個那個數字做二補數。

二補數表示法整數的算術運算

當我們要做減法時,電腦會將其轉為加法,但將要減的那個那個數字做二補數。

二補數表示法整數的算術運算

當我們要做減法時,電腦會將其轉為加法,但將要減的那個那個數字做二補數。

二補數表示法整數的算術運算

當我們要做減法時,電腦會將其轉為加法,但將要減的那個那個數字做二補數。

二補數表示法整數的算術運算

當我們要做減法時,電腦會將其轉為加法,但將要減的那個那個數字做二補數。

二補數表示法整數的算術運算

當我們要做減法時,電腦會將其轉為加法,但將要減的那個那個數字做二補數。

二補數表示法整數的算術運算

計算機組織

簡介

我們可以將構成計算機的元素分為三個子系統。分別是中央處理單元(CPU)、主記憶體和輸入輸出子系統。

中央處理單元

中央處理單元是對資料進行操作的咚咚。大多數情況下會有三個部分,一個算術邏輯單元(ALU)、一個控制單元和暫存器(registers)。

主記憶體

- 主記憶體式計算機的第二的大的子系統。

- address

- words

- 8 bits = 1 byte

定址空間(address space)

- 有多少 words

- 如果有 64 KB 記憶體,1 個 word 1 bytes ,address space 是多少到多少?

\(2^6*2^{10} = 2^{16} = 65536\)

0~65535

定址空間(address space)

- 有多少 words

- 如果有 64 KB 記憶體,1 個 word 1 bytes ,address space 是多少到多少?

0~65535

2^16 

記憶體的種類與階層

- RAM(Random access memory)

- ROM(Read-only memory)

快取記憶體(cache memory)

  • 有一些主記憶體的複製
  • 抓東西的時候會先抓 Cache 沒有的話再從主記憶體抓到 Cache

輸入輸出子系統

  • 連接電腦與外部
  • 分為非儲存與儲存裝置

CPU和記憶體間的連接

  • 資料匯流排(data bus)
  • 位址匯流排(address bus)
  • 控制匯流排(control bus)

連接輸入輸出裝置

  • 資料匯流排(data bus)
  • 位址匯流排(address bus)
  • 控制匯流排(control bus)

參考資料

吃飯

大概是計概

By mouyilai

大概是計概

  • 75