OuOb
我會亂寫中文。
通用計算設備的概念最早由艾倫圖靈於 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\}\)
二進位系統中,基底為2
而符號為 \(S=\{0, 1\}\)
十六進位系統中,基底為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
八進位系統中,基底為8
而符號為 \(S=\{0, 1, 2, 3, 4, 5, 6, 7, 8\}\)
非位置數字系統仍然使用數量有限的符號,其中每個符號都有一個值。但是一個符號在數中所處的位置與它的值無關,也就是每個符號的值都是固定的。要求得一個數的值,我們需要將所有符號所代表的值相加。
在這個系統中,一個數字表示為\(\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 中,正整數和負整數都以 unsigned integer 儲存。要表示一個正整數或負整數,需要在每個數字上添加一個正整數(稱為 bias),以便將它們均勻地移至非負數一側。bias 為 \(2^{m-1} -1\),其中 \(m\) 是儲存指數的記憶體位置大小。
雖然可以用二進位系統來儲存冪,但現在使用了一種新的表示法叫做 Excess System。在 Excess System 中,正整數和負整數都以 unsigned integer 儲存。要表示一個正整數或負整數,需要在每個數字上添加一個正整數(稱為 bias),以便將它們均勻地移至非負數一側。bias 為 \(2^{m-1} -1\),其中 \(m\) 是儲存指數的記憶體位置大小。
IEEE(The Institute of Electrical and Electronics Engineers) 制定了一些儲存浮點數的標準。我們會介紹最常見的兩個,單精度(32 bits)和雙精度(64 bits)。
IEEE(The Institute of Electrical and Electronics Engineers) 制定了一些儲存浮點數的標準。我們會介紹最常見的兩個,單精度(32 bits)和雙精度(64 bits)。
IEEE(The Institute of Electrical and Electronics Engineers) 制定了一些儲存浮點數的標準。我們會介紹最常見的兩個,單精度(32 bits)和雙精度(64 bits)。
IEEE(The Institute of Electrical and Electronics Engineers) 制定了一些儲存浮點數的標準。我們會介紹最常見的兩個,單精度(32 bits)和雙精度(64 bits)。
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)中,我們需要確定每平方公分需要記錄多少像素。圖像處理中的掃描率稱為解析度。如果解析度足夠高,人眼就無法識別複製的圖像中的不連續性。
色深代表一個像素要用多少個 bit 來表示,取決於不同編碼技術對像素顏色的處理方式。我們的眼睛有不同類型的感光細胞:有些感光細胞對紅、綠、藍三色(通常稱為 RGB)做出反應,而有些則僅僅對光的強度做出反應。
真彩色是一種對像素進行編碼的方式,一個像素會用 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。
位元可以取兩個值中的一個: 0 或 1。如果我們將 0 解釋為假,1 解釋為真,我們就可以運用布林代數中定義的運算來操作位元。布林代數是為了紀念 George Boole 而命名的,屬於稱為邏輯的特殊數學領域。
在本節中,我們將簡單介紹四種用來操作位元的位元級運算: NOT、AND、OR 和 XOR。
位元可以取兩個值中的一個: 0 或 1。如果我們將 0 解釋為假,1 解釋為真,我們就可以運用布林代數中定義的運算來操作位元。布林代數是為了紀念 George Boole 而命名的,屬於稱為邏輯的特殊數學領域。
在本節中,我們將簡單介紹四種用來操作位元的位元級運算: NOT、AND、OR 和 XOR。
同樣的四個運算 (NOT、AND、OR 和 XOR) 可以套用在 n-bit pattern上。對於 NOT 運算符號,其效果與將每個運算應用於每個位元相同;對於其他三個運算,其效果與將每個運算符號應用於對應的每對位元相同。
同樣的四個運算 (NOT、AND、OR 和 XOR) 可以套用在 n-bit pattern上。對於 NOT 運算符號,其效果與將每個運算應用於每個位元相同;對於其他三個運算,其效果與將每個運算符號應用於對應的每對位元相同。
同樣的四個運算 (NOT、AND、OR 和 XOR) 可以套用在 n-bit pattern上。對於 NOT 運算符號,其效果與將每個運算應用於每個位元相同;對於其他三個運算,其效果與將每個運算符號應用於對應的每對位元相同。
同樣的四個運算 (NOT、AND、OR 和 XOR) 可以套用在 n-bit pattern上。對於 NOT 運算符號,其效果與將每個運算應用於每個位元相同;對於其他三個運算,其效果與將每個運算符號應用於對應的每對位元相同。
同樣的四個運算 (NOT、AND、OR 和 XOR) 可以套用在 n-bit pattern上。對於 NOT 運算符號,其效果與將每個運算應用於每個位元相同;對於其他三個運算,其效果與將每個運算符號應用於對應的每對位元相同。
這四個運算可以用來修改一個 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
- 有多少 words
- 如果有 64 KB 記憶體,1 個 word 1 bytes ,address space 是多少到多少?
\(2^6*2^{10} = 2^{16} = 65536\)
0~65535
- 有多少 words
- 如果有 64 KB 記憶體,1 個 word 1 bytes ,address space 是多少到多少?
0~65535
2^16
- RAM(Random access memory)
- ROM(Read-only memory)