108 鐵路特考高員三級 電子工程 計算機概論 考古題詳解
第 一 題30 分
有一部 位元 CPU 的電腦,其處理器(Processor)具有位址匯流排(Address Bus) 條,請回答下列問題。(每小題 分,共 分)
(一) 此處理器可以定址多少記憶體空間?
(二) 用哪一個暫存器來儲存下一個指令的位址?
(三) 儲存下一個指令位址的暫存器需要多少位元才合理?
(四) 當此處理器的算術邏輯運算單元(ALU)執行有號數的加法(ADD)運算時,如何知道發生溢位(Overflow)?
(五) 此處理器的算術邏輯運算單元(ALU)運算時,二進位的負數使用 補數表示法來代表,請問十進位的數字 在此處理器中該如何表示成二進位數字?
(六) 此電腦在處理每一個指令(Instruction)時,第一個階段通常必須由記憶體取出指令放在 CPU 中準備執行,請解釋此動作所代表的行為和使用的暫存器為何?
登入後即可作答並保存紀錄。
核心觀念
本題為計算機結構(Computer Architecture)與計算機組織(Computer Organization)的經典綜合題,涵蓋處理器硬體規格、記憶體定址、暫存器功能、ALU 算術與補數運算,以及指令週期的微操作流程:
- 記憶體定址空間計算:定址容量由「位址匯流排條數()」與「定址基本單位」決定。公式為: 在現代通用計算機架構中,若無特別聲明,預設採「位元組定址」(Byte-addressable)。
- CPU 專用暫存器之功能與寬度:
- 程式計數器(Program Counter, PC):負責循序控制程式執行,儲存「下一條即將被擷取執行的指令之記憶體位址」。
- 暫存器合理位元數取決於系統的可定址空間範圍(即位址線條數),並配合 CPU 內部的資料路徑字組寬度(Word Size)。
- 有號數加法溢位(Overflow)判定原理:
- 數值範圍溢出判定:在 2 補數系統中,僅有「兩正數相加結果為負」或「兩負數相加結果為正」時會發生溢位;異號數相加絕不可能溢位。
- 硬體實現準則:最高有效位元(MSB,符號位元)之進位輸入()與進位輸出()做互斥或(XOR)運算,若 ,則代表發生溢位。
- 2 補數表示法(Two's Complement):
- 針對 位元的負整數 ,其 2 補數計算方式為 ;實作捷徑為將正數 的二進位表示式全部「位元反相(取 1 補數)」後再「加 」。
- 本題處理器為 32 位元,因此數值表示必須擴展至完整的 32 位元長度。
- 指令週期之擷取階段(Instruction Fetch, IF)與 RTL 微運算:
- 指令週期的首要步驟,由 CPU 根據 PC 內容向記憶體發出讀取請求,將指令由記憶體載入至指令暫存器(IR),並自動遞增 PC。
解題方法
(一) 計算可定址之記憶體空間
- 推導步驟:
- 處理器擁有位址匯流排(Address Bus) 條,代表 CPU 硬體能輸出 種不同的實體記憶體位址編號。
- 依計算機標準慣例,記憶體採位元組定址(Byte-addressable,即每個位址對應 1 Byte): (補充說明:若題目在特殊假設下採字組定址 Word-addressable,因 32 位元 CPU 之 1 Word ,定址空間為 ;但國家考試標準評分均以通用之位元組定址為主答。)
(二) 儲存下一個指令位址之暫存器
- 推導步驟: 在范紐曼架構(Von Neumann Architecture)中,CPU 用來存放「下一條將要被擷取並執行之指令位址」的專用暫存器為程式計數器(Program Counter, PC)。在 Intel x86 系列架構中亦稱為指令指標暫存器(Instruction Pointer, IP / EIP)。
(三) 儲存下一個指令位址暫存器的合理位元數
- 推導步驟:
- 系統具備 條位址線,實體位址編號範圍為 。為了能完整定址所有記憶體空間,PC 至少需要 位元。
- 另一方面,此處理器為 位元 CPU,內部資料路徑、通用暫存器及內部匯流排標準規格均為 位元。因此,在實際處理器設計上,將 PC 設計為 位元(精準對應位址線)或 位元(高 2 位元補 或保留,配合處理器內部標準字組規格)均屬合理。
(四) 有號數加法溢位(Overflow)之判斷方式
- 推導步驟: 在執行 2 補數有號數加法時,ALU 判定溢位可由「邏輯數值行為」與「硬體電路邏輯」兩方面說明:
- 符號位元檢查法(軟體/邏輯層面): 檢視兩運算元之符號位元(MSB)與運算結果之符號位元。當兩正數相加結果變為負數,或兩負數相加結果變為正數時,即代表結果超出表示範圍,發生溢位。
- 進位位元互斥或法(硬體電路層面): 加法器硬體會檢查最高有效位元(符號位元)之進位輸入()與進位輸出()。透過互斥或閘(XOR)運算: 若 (即 ),硬體即判定發生溢位。
- 旗標狀態紀錄: 當溢位發生時,ALU 會將狀態暫存器(Status Register / Flags Register)中的溢位旗標(Overflow Flag, OF)設定為 。
(五) 十進位數字 之 32 位元 2 補數二進位表示法
- 推導步驟:
- 此處理器為 位元 CPU,因此負數表示長度必須補足為 位元(4 位元組)。
- 先求十進位數 的二進位表示:
- 8 位元二進位:
01000011 - 擴展至 32 位元正數格式(高位元全部補 ):
第 二 題20 分
有一個迷宮(maze)如下圖所示:
🖼️【此處有附圖,請對照原卷】
(一) 請畫出相對於此迷宮之樹狀圖(Tree Diagram)。
(二) 請用深度優先搜尋法(Depth-First Search)找出迷宮起點(A)到終點(Q)的路徑。
(每小題 分,共 分)
登入後即可作答並保存紀錄。
核心觀念
深度優先搜尋(Depth-First Search, DFS)從起點出發,每次選一個尚未拜訪的相鄰節點繼續前進;若走到死路,就退回上一個仍有未拜訪分支的節點。搜尋樹以起點為根,將每次首次拜訪節點時經過的邊列為樹枝。
解題方法
要畫出本題的樹狀圖並列出 A 到 Q 的 DFS 路徑,必須先判讀迷宮中每條牆的端點與缺口,據此確定哪些字母位置彼此相通。題目也沒有指定分支的探索順序;若存在多個未拜訪的相鄰位置,需先約定方向順序,DFS 搜尋樹與拜訪順序才會唯一。
圖形判讀限制
第 三 題20 分
下列為 C 語言的兩個程式,請分別寫出執行後的結果。(每小題 分,共 分)
(一)
#include <stdio.h>
int main (void) { int a, b, c; int *p; int *q; int *r;
a = 60;
b = 20;
p = &b;
q = p;
r = &c;
p = &a;
*q = 8;
*r = *p;
*r = a + *q + *&c;
printf("Result 1: %d %d %d \n", a, b, c);
printf("Result 2: %d %d %d \n", *p, *q, *r);
return 0;
}
(二)
#include <stdio.h>
int main (void) { int list[15] = { 2,1,2,1,1,2,3,2,1,2,-1,1,0,1,1 };
printf("%d \n", list[2]);
printf("%d \n", list[list[2]]);
printf("%d \n", list[list[2]+list[3]]);
printf("%d \n", list[list[2]]);
printf("%d \n", list[2]+list[12]);
return 0;
}
登入後即可作答並保存紀錄。
核心觀念
本題評量 C 語言的兩大核心基礎:指標(Pointers)運算與一維陣列(Arrays)索引存取。
- 指標變數與位址運算:
- 取位址運算子(Address-of Operator)
&:取得變數在記憶體中的位址。 - 反參考運算子(Dereference Operator)
*:存取指標所指向記憶體位址中的內容。 - 指標別名與重綁定:指標變數存放的是記憶體位址。將指標賦值給另一個指標(如
q = p)代表兩者指向同一位址;隨後改變指標變數自身的指向(如p = &a),不會連帶改變其他已指向原位址的指標變數(q仍指向原位址)。 - 運算子抵消特性:
*&c表示對c取位址後立即進行反參考,效果等同於直接存取變數c之值。
- 陣列索引與巢狀存取(Nested Indexing):
- C 語言陣列索引自 起算(0-indexed),長度為 的陣列合法索引範圍為 。
- 巢狀陣列索引如
list[list[k]],計算時採「由內向外(Inside-Out)」原則,先求出內部索引的值,再將該值作為外部陣列存取的索引。
解題方法
(一) 第一小題:指標追蹤與變數狀態推導
宣告並初始化各變數後,依程式碼逐行追蹤記憶體狀態:
- 初始狀態:
a = 60;、b = 20;,變數c尚未初始化。
- 指標指向建立:
p = &b;:p指向b。q = p;:q同樣指向b。r = &c;:r指向c。p = &a;:p重新指向a;此時q依然指向b,r依然指向c。
- 數值修改與計算:
*q = 8;:透過指標q修改其指向的記憶體內容,使變數b = 8。*r = *p;:*p取出a的值(),寫入*r所指之變數c,故c = 60。*r = a + *q + *&c;:a之值為 。*q為b之值,即 。*&c即c本身,其目前值為 。- 等號右式:。
- 將 寫入
*r(即變數c),因此c = 128。
- 輸出分析:
- 各變數最終數值:
a = 60,b = 8,c = 128。 - 各指標反參考數值:
*p = 60(指向a),*q = 8(指向b),*r = 128(指向c)。 - 第一行
printf("Result 1: %d %d %d \n", a, b, c);印出:Result 1: 60 8 128 - 第二行
printf("Result 2: %d %d %d \n", *p, *q, *r);印出:
第 四 題20 分
請回答下列關於網際網路以及應用上的問題:
(一) 在 IPv4 的網路位址中可以使用「」來表示一段網路位址,請問這段網路裡包含的 IP 位址範圍為何?通常哪一個 IP 位址會用來當網路識別碼(Network ID)使用?通常哪一個 IP 位址會用來當該網路的廣播位址使用?( 分)
(二) 資料傳輸的錯誤檢查常見會使用奇同位檢查(Odd Parity Check)或是偶同位檢查(Even Parity Check),請問此兩種同位檢查的優點和缺點?( 分)
(三) 請說明何謂 URL(Uniform Resource Locator)以及完整的 URL 應該包含那些部分?( 分)
登入後即可作答並保存紀錄。
核心觀念
本題涵蓋計算機網路與資料通訊領域的三大經典基礎觀念:
- IPv4 無類別網域間路由(CIDR)與子網路切割:IPv4 位址由 32 個位元(bits)組成,CIDR 斜線記法(Slash Notation)中的 代表網路前綴(Network Prefix)長度為 位元,其餘 個位元為主機識別碼(Host ID)。在一個子網路區段中,主機位元全為 的 IP 保留為「網路識別碼(Network ID)」,主機位元全為 的 IP 保留為「廣播位址(Broadcast Address)」。
- 錯誤檢查碼(Error Detection Code)之同位檢查(Parity Check):屬於實體層與資料鏈結層最簡易的檢錯機制,利用附加 1 個同位位元(Parity Bit),使資料包含同位元在內的所有位元中「」的總個數維持為奇數(奇同位)或偶數(偶同位)。
- 統一資源定位器(Uniform Resource Locator, URL)規範:依據網際網路標準(RFC 1738 與 RFC 3986),URL 是統一資源識別碼(URI)的子集,用於唯一定位網際網路上的資源並指定存取該資源所使用的通訊協定與路徑語法。
解題方法
(一) 子網路位址範圍、網路識別碼與廣播位址計算
- 計算主機位元數與子網路大小:
- 給定位址為 。
- 網路前綴長度為 位元,因此主機位元數 為:
- 該區段所包含的 IP 位址總數為:
- 子網路遮罩(Subnet Mask)第四個位元組(Octet)前 3 位元為 、後 5 位元為 (二進位
11100000),對應十進位為 ,即子網路遮罩為 。
- 決定 IP 位址範圍與特殊位址:
- 區段基底位址之第四個 Octet 為 (二進位
00000000)。 - 網路識別碼(Network ID):主機位元(後 5 位元)全為 ,即
192.168.1.0。 - 廣播位址(Broadcast Address):主機位元(後 5 位元)全為 ,即第四個 Octet 二進位為
00011111,十進位為 ,位址為192.168.1.31。 - IP 位址總範圍:包含從 Network ID 至 Broadcast Address 的所有位址,範圍為 (共 32 個 IP 位址)。
- (補充:若指可指派給主機使用的有效 IP 範圍,則排除 Network ID 與 Broadcast 位址,為 ,共 30 個)。
(二) 奇同位檢查與偶同位檢查之優缺點分析
- 同位檢查定義:
- 奇同位檢查(Odd Parity Check):附加同位位元後,使資料組內「」的總個數為奇數。
- 偶同位檢查(Even Parity Check):附加同位位元後,使資料組內「」的總個數為偶數。
- 優點(Advantages):
- 硬體電路極簡、成本低廉:發送端產生同位元與接收端驗證僅需使用基本的「互斥或閘(XOR Gate)」串接,運算複雜度極低,不耗費運算資源。
- 傳輸負擔極低(Low Overhead):通常以 1 位元組(Byte)為單位僅增加 1 個位元,佔用之頻寬與傳輸延遲極小。
- 對單一位元錯誤具百分之百偵測力:可完全檢測出單一位元翻轉或任意「奇數個位元」同時發生的傳輸錯誤。
- 奇同位的特有優點:奇同位可有效偵測「全 」的硬體線路斷線(Line-dead)或失能狀態。因為全 資料在奇同位下的同位元必為 ,若接收端收到全 ,即能立刻判定線路異常;偶同位則會將全 誤判為正確。
- 缺點(Disadvantages):
- 無法偵測偶數個位元錯誤(Blind to Even Errors):若在傳輸過程中同時發生 2 個、4 個等「偶數個位元」翻轉,位元組中「」的奇偶特性保持不變,同位檢查完全無法察覺錯誤,造成漏檢。
- 不具備更正錯誤能力(No Error Correction):同位檢查僅能判斷資料是否有誤,無法精確定位出錯的位元位置,接收端無法自行修復,只能要求重傳(ARQ)或直接丟棄。
- 抗雜訊能力薄弱:面對通訊通道中常見的突發性雜訊(Burst Noise,常造成連續多位元毀損),同位檢查的可靠度極低,無法應用於現代高速或高雜訊網路環境。
(三) URL 定義與完整組成架構
- URL 定義: URL 全名為 Uniform Resource Locator(統一資源定位器),是網際網路上標準的資源定址協議。它不僅提供了該資源在網路上的唯一位置,亦指明了客戶端存取該資源時所必須遵循的通訊協定,是全球資訊網(WWW)的核心定址基礎。
第 五 題10 分
請說明 RSA 非對稱式金鑰的加解密演算法如何產生所需的密碼金鑰?
登入後即可作答並保存紀錄。
核心觀念
本題評量非對稱式(公開金鑰)密碼系統之代表——RSA 演算法(由 Rivest、Shamir、Adleman 於 1977 年提出)的金鑰產生機制(Key Generation)。
RSA 的安全性建立在大整數質因數分解的計算困難性(Integer Factorization Problem)。其核心數學理論為數論(Number Theory)與歐拉定理(Euler's Totient Theorem):
- 歐拉函數(Euler's Totient Function):若 (、 均為相異質數),則小於 且與 互質的正整數個數為:
- 模乘法反元素(Modular Multiplicative Inverse):給定整數 與模數 ,若 ,則必存在唯一的整數 (),使得:
- 金鑰架構:
- 公開金鑰(Public Key, ):由模數 與公鑰指數 組成,對外公開。
- 秘密金鑰(Private Key, ):由模數 與私鑰指數 組成,由擁有者嚴格保密( 與 亦須銷毀或保密)。
解題方法
在國家考試申論題中,回答 RSA 金鑰產生流程必須條理分明,以數學步驟演繹搭配符號定義,方能取得滿分。產生金鑰的標準程序如下:
步驟一:選取兩個相異大質數
隨機挑選兩個獨立且足夠大的相異質數 與 (在現行資訊安全實務中,建議二者長度各為 1024 位元以上,以確保安全性)。此二質數必須絕對保密。
步驟二:計算模數
計算 與 的乘積: 數值 稱為模數(Modulus), 的位元長度即為該 RSA 系統的金鑰長度(例如 位元)。此模數 將對外公開。
步驟三:計算歐拉函數值
計算小於 且與 互質的整數個數: 此數值 必須極度保密,一旦外洩,攻擊者即可輕易計算出私鑰。
步驟四:選取公開金鑰指數
選定一個整數 (Encryption Exponent),滿足下列條件:
- (即 與 互質)
在工程實務上,為求加密運算的高效性, 常選用二進位表示中「」極少的數值,最普遍的選擇為 (即 )或 、。
步驟五:計算秘密金鑰指數
求取 在模數 之下的模乘法反元素 (Decryption Exponent),即求解同餘方程式: