107 地方特考三等 電子工程 計算機概論 考古題詳解
第 一 題25 分
一、一個正整數 的階乘(factorial)函數定義為 ,並且定義 。(每小題 5 分,共 25 分)
(一) 下列是計算 的一個虛擬碼(pseudocode)。如果我們呼叫 ,那麼這個程式執行到最後「return F」這一行時, 的值會等於多少?
🖼️【此處有附圖,請對照原卷】
Algorithm: Factorial(n)
while
return
(二) 承上題,如果我們呼叫 ,那麼這個程式執行到最後「return F」這一行時, 的值會等於多少?
(三) 承上題,以上的方法我們將之稱為是一種「iteration solution」,請說明何謂「iteration solution」?
(四) 階乘函數亦可以遞迴(recursion)方式定義:,。以下是計算 的一個 recursive solution 虛擬碼(pseudocode)。請說明何謂「recursive solution」?
🖼️【此處有附圖,請對照原卷】
Algorithm: Factorial(n)
if
return
else
return
(五) 承上題,如果 值很大,計算 的 recursive solution 的空間複雜度(space complexity)為何?
登入後即可作答並保存紀錄。
核心觀念
本題評量程式設計與演算法的兩大基本計算模型——迭代(Iteration)與遞迴(Recursion),核心考點包含:
- 迴圈狀態追蹤(Trace):評估
while迴圈之終止條件判定時機與狀態變數的最終數值。 - 迭代法(Iterative Solution)的本質:利用重複執行結構(迴圈)與變數狀態更新來逐步累計結果。
- 遞迴法(Recursive Solution)的結構:透過函式呼叫自身(Self-calling),依循「基本情況(Base Case)」與「遞迴步驟(Recursive Step)」化簡問題。
- 系統呼叫堆疊(Call Stack)與空間複雜度:遞迴執行時每層函式呼叫所需的堆疊框架(Stack Frame)佔用與記憶體深度分析。
解題方法
(一) 計算呼叫 時,執行至「return F」時 的值
追蹤變數 與計數器 在迴圈中的變化流程(Trace Table):
- 初始狀態:,。
- 第 1 次迴圈:判斷 (成立),,。
- 第 2 次迴圈:判斷 (成立),,。
- 第 3 次迴圈:判斷 (成立),,。
- 第 4 次迴圈:判斷 (成立),,。
- 第 5 次迴圈:判斷 (成立),,。
- 第 6 次迴圈:判斷 (成立),,。
- 迴圈終止判定:判斷 (不成立,False),跳出
while迴圈。
執行至 return F 時, 的值為 (即 )。
(二) 承上題,執行至「return F」時 的值
while (i <= n) 迴圈必須等到條件判斷為「偽(False)」時才會終止。
由 (一) 之追蹤過程可知,當 遞增至 時,條件 為 False,程式隨即跳出迴圈並前進至 return F。
因此,執行到 return F 這一行時, 的值等於 。
(三) 何謂「iteration solution」
迭代解法(Iteration Solution)是指利用迴圈控制結構(如 for、while、do-while)重複執行某一段特定的程式碼區塊,藉由在每次執行過程中持續更新一組或多組狀態變數(State Variables),逐步逼近或直接累計求得問題解答的方法。
第 二 題25 分
二、下圖是將一個 10 進位的小數 轉換為 2 進位的小數 的過程示意圖,其結束條件為「乘上 2 後小數部分等於 0」。(每小題 5 分,共 25 分)
🖼️【此處有附圖,請對照原卷】
(一) 如果要將一個 10 進位的小數 轉換為 2 進位的小數,請你也同上圖一樣,繪圖表示這個過程。
(二) 如果要將一個 10 進位的小數 轉換為 2 進位的小數,請你也同上圖一樣,繪圖表示這個過程。請問會發生什麼困難?
(三) 請問使用 IEEE-754 的實數表示法後,會不會有誤差?為什麼?
(四) 上述方法可以推廣轉換到其它進位。如果要將一個 10 進位的小數 轉換為 16 進位的小數,請你也同上圖一樣,繪圖表示這個過程。
(五) 上述方法的結束條件若為「乘上 2 後小數部分等於 0」顯然會造成問題,請問結束條件應該如何修正?
登入後即可作答並保存紀錄。
核心觀念
- 小數進位制轉換(連乘基數取整數法,Successive Multiplication Method): 十進位小數轉換為 進位小數時,將小數部分連續乘以基數 。每次相乘後,取出整數部分作為該位數的數碼(由最高有效位 MSB 向最低有效位 LSB 依序排列),再取剩餘的小數部分重複此步驟,直到小數部分為 或達到所需精度為止。
- 有限小數與循環小數的數學條件: 十進位既約分數 在 進位下能表示為有限小數的充要條件為:分母 的所有質因數皆為基數 質因數的子集。若分母含有無法被 整除的質因數,轉換後必為「無限循環小數」。
- IEEE-754 浮點數表示法的精度極限: 計算機硬體內部使用有限長度的位元儲存浮點數(如單精度 32 位元之尾數佔 23 位元,雙精度 64 位元之尾數佔 52 位元)。無法以有限二進位位元完全表示的無限循環小數,必會因捨入(Rounding)或截斷(Truncation)而產生表示誤差(Representation Error)。
- 數值演算法終止條件設計: 單一判定「小數部分等於 」在面對無限循環小數時會導致無窮迴圈(Infinite Loop),必須引入「最大精度位數」或「循環偵測」等複合終止機制。
解題方法
(一) 將十進位小數 轉換為二進位小數之過程
計算推導步驟:
- 整數部分為 (十分位 ,MSB),剩餘小數部分為 。
- 整數部分為 (百分位 ),剩餘小數部分為 。
- 整數部分為 (千分位 ),剩餘小數部分為 。
- 整數部分為 (萬分位 ,LSB),剩餘小數部分為 。
- 小數部分已為 ,符合結束條件,停止計算。
過程示意圖:
[ 0.6875 ]
× 2
--------
= 1.375 ──── 取整數部分 ───> 1 (第 1 位小數,2⁻¹,MSB)
│ (取小數 0.375)
▼
[ 0.375 ]
× 2
--------
= 0.75 ──── 取整數部分 ───> 0 (第 2 位小數,2⁻²)
│ (取小數 0.75)
▼
[ 0.75 ]
× 2
--------
= 1.5 ──── 取整數部分 ───> 1 (第 3 位小數,2⁻³)
│ (取小數 0.5)
▼
[ 0.5 ]
× 2
--------
= 1.0 ──── 取整數部分 ───> 1 (第 4 位小數,2⁻⁴,LSB)
│
└──────> 小數部分為 0 ───> [ 結束 ]
由上往下讀取整數部分,轉換結果為:0.1011₂
(二) 將十進位小數 轉換為二進位小數之過程與困難
計算推導步驟:
- 整數部分為 ,剩餘小數部分為 。
- 整數部分為 ,剩餘小數部分為 。
- 整數部分為 ,剩餘小數部分為 。
- 整數部分為 ,剩餘小數部分為 。
- 整數部分為 ,剩餘小數部分為 (小數部分 重複出現,進入循環)。
- 整數部分為 ,剩餘小數部分為 。
過程示意圖:
[ 0.3 ]
× 2
-------
= 0.6 ──── 取整數部分 ───> 0
│
▼
[ 0.6 ] ◄─────────────────────────┐
× 2 │
------- │
= 1.2 ──── 取整數部分 ───> 1 │
│ │
▼ │
[ 0.2 ] │
× 2 │
------- │ (小數部分 0.6 重複出現)
= 0.4 ──── 取整數部分 ───> 0 │ (產生週期為 4 的循環節)
│ │
▼ │
[ 0.4 ] │
× 2 │
------- │
= 0.8 ──── 取整數部分 ───> 0 │
│ │
▼ │
[ 0.8 ] │
× 2 │
------- │
= 1.6 ──── 取整數部分 ───> 1 │
│ (取小數 0.6) │
└───────────────────────────────┘
產生循環序列:0.0100110011001...₂ = 0.01001₂ (循環節為 1001)
發生的困難:
- 陷入無窮迴圈(無法滿足終止條件): 十進位小數 ,其分母含有質因數 (非 的冪次),在二進位下為無限循環小數(循環節為 )。
- 其乘積的小數部分永遠不可能等於 。若演算法僅以「乘上 2 後小數部分等於 0」作為結束條件,程式將陷入無窮迴圈(Infinite Loop)而無法終止。
(三) 使用 IEEE-754 實數表示法是否會有誤差及其原因
結論:會產生誤差。
原因剖析:
- 二進位循環小數無法以有限長度精確表達: 十進位數值 轉換為二進位科學記號為: 其尾數(Mantissa / Fraction)為無窮循環序列。
- 硬體儲存位元數受限(有限精確度): IEEE-754 標準中,浮點數的有效位數是固定的:
第 三 題25 分
三、JPEG 是一種影像壓縮法,它有三個步驟:DCT、Quantization、Lossless Compression,如下圖所示。(每小題 5 分,共 25 分)
🖼️【此處有附圖,請對照原卷】
(一) JPEG 演算法先將影像切割成較小的圖像區塊「Blocked Image」來一一處理。請問這個較小的圖像區塊的像素數量是多少?
(二) 請寫出 DCT 的英文全名。
(三) 第三個步驟稱為 Lossless Compression,請問「Lossless」意思為何?
(四) JPEG 的壓縮比率可大可小,請說明其理由。
(五) 請說明 Quantization 這步驟做了什麼計算。
登入後即可作答並保存紀錄。
核心觀念
本題評量多媒體系統中經典靜態影像壓縮標準 JPEG(Joint Photographic Experts Group) 的核心運作機制與壓縮管線(Compression Pipeline)。主要涵蓋以下核心觀念與定義:
- 空間分塊(Image Blocking):JPEG 標準基準模式(Baseline JPEG)以 的像素矩陣作為基本處理單元(Data Unit)。
- 離散餘弦轉換(Discrete Cosine Transform, DCT):將空間域(Spatial Domain)的像素強度轉換至頻域(Frequency Domain),分離出直流成分(DC Coefficient,代表區塊平均亮度)與交流成分(AC Coefficients,代表不同頻率之紋理與細節),達到能量集中(Energy Compaction)效果。
- 失真/無失真壓縮(Lossy vs. Lossless Compression):
- 無失真(Lossless):資料壓縮還原後與原始輸入完全相同,無任何資訊損失(消除統計冗餘)。
- 破壞性/失真(Lossy):捨棄人類視覺系統(HVS)不敏感的資訊,解壓縮後無法百分之百還原原始數值(消除心理視覺冗餘)。
- 量化(Quantization)與壓縮比控制:量化為 JPEG 演算法中唯一的失真來源。利用人類視覺對低頻敏感、對高頻遲鈍的生理特性,透過量化矩陣進行除法與四捨五入截斷,將大量高頻係數歸零,並藉由調整量化矩陣步階(品質因子 Quality Factor)來動態調整壓縮比。
解題方法
本題為標準的觀念問答題,各小題之解題論述脈絡如下:
-
第 (一) 小題(分塊大小計算): 依據 JPEG 規範,影像各通道(如 Y、Cb、Cr)在輸入轉換前會被切分為 的像素區塊,像素總數即為面積相乘:
-
第 (二) 小題(DCT 英文全名): 寫出標準專有名詞 Discrete Cosine Transform,注意拼字與大小寫慣例。
-
第 (三) 小題(Lossless 意涵): 從資訊理論與編碼角度切入,明確定義「還原資料與原始資料完全一致(Bit-for-bit identical)」,並指出 JPEG 流程中的無失真步驟主要為熵編碼(如 Run-Length Encoding 與 Huffman Coding)。
-
第 (四) 小題(壓縮比率可變之理由): 聚焦於「量化(Quantization)」步驟中量化表(Quantization Table)與品質係數(Quality Factor)的縮放機制。量化矩陣的數值越大(粗量化),被截斷為 的高頻交流係數越多,遊程長度越長,使熵編碼的壓縮比大幅提高,但畫質隨之降低;反之量化矩陣數值越小(細量化),保留細節越多,壓縮比降低但畫質提升。
-
第 (五) 小題(量化之計算內容): 寫出量化運算的數學公式。對於 DCT 轉換後的頻率係數矩陣 與對應的量化矩陣 ,其計算本質為「逐元素相除並取四捨五入整數」: 說明其目的在於抑制高頻成分並產生大量連零,為不可逆的失真運算。
選項分析
本題為非選擇題(申論問答題),無選項可供拆解。各小題的評分要點與答題關鍵剖析如下:
- 第 (一) 小題: 若僅回答「」可能被扣除計算結果分數,必須明確寫出算式及總數「 個像素」。
- 第 (二) 小題: 必須完整寫出「Discrete Cosine Transform」,若單字拼錯(如 Cosine 誤拼為 Cosin 或 Transform 拼錯)將依評分標準斟酌扣分。
第 四 題25 分
四、下圖顯示典型的作業系統組成的元件。(每小題 5 分,共 25 分)
🖼️【此處有附圖,請對照原卷】
圖中元件包括:Operating System、User Interface、Memory Manager、Process Manager、Device Manager、File Manager。
(一) 何謂作業系統的 kernel?
(二) 何謂作業系統的 shell?
(三) 有一類型的 User Interface,簡稱為 GUI,請寫出其英文全名。
(四) Process Manager 是用來管理 Process。請問 Process 和 Job 有何差別?
(五) 在 paging system 中,Memory Manager 需處理 page fault interrupt。何謂 page fault interrupt?
登入後即可作答並保存紀錄。
核心觀念
本題評量作業系統(Operating System, OS)的基礎架構與核心模組運作機制,出自經典作業系統階層式模型(Layered Architecture):
- 雙重模式運作(Dual-Mode Operation)與核心(Kernel):作業系統區分為核心模式(Kernel Mode / Supervisor Mode)與使用者模式(User Mode)。Kernel 為最底層且常駐記憶體的核心程式,具備特權指令執行權限。
- 命令解譯器(Shell)與使用者介面(User Interface):Shell 屬於使用者層級(User Space)的介面程式,負責接收並解析使用者指令,透過系統呼叫(System Call)向 Kernel 請求服務。
- 處理元管理(Process Management):區分「外存靜態工作(Job)」與「記憶體中動態執行單元(Process)」的生命週期、控制區塊(PCB)與排程階層(長程 vs. 短程排程)。
- 虛擬記憶體與隨選分頁(Demand Paging):分頁系統中利用分頁表(Page Table)之有效/無效位元(Valid/Invalid Bit)實作虛擬記憶體,當存取未載入實體記憶體的分頁時觸發分頁缺失中斷(Page Fault Interrupt)。
解題方法
本題為典型之申論問答題,解題切入點如下:
- (一) 與 (二) 核心與外殼之對比:從「記憶體常駐性」、「執行模式(特權級別)」及「主要職責」精確定義 Kernel 與 Shell,並強調 Shell 運作於使用者空間,並非 Kernel 本身。
- (三) 名詞全稱與概念:精確拼寫 GUI 之英文全名,並補述其人機互動本質(圖形元素與直覺操作)。
- (四) 比較題型切入法:建立多維度比較指標(抽象層次、存在媒體、資源配置、管理排程器),剖析 Job 與 Process 的本質差異。
- (五) 中斷機制與流程推導:先給出 Page Fault 的精確觸發定義(硬體 MMU 檢查無效位元產生之 Trap/Exception),再依序條列作業系統 Page Fault Handler 的標準處理步驟,展現扎實的系統觀念。
各小題深入解析
本題為申論問答題,無選擇題選項,各小題逐一深入分析如下:
-
第 (一) 小題:作業系統的 Kernel Kernel(核心)是作業系統的心臟與最基礎軟體模組。電腦開機完成引導(Bootstrap)後即常駐於主記憶體中,運作於 CPU 的特權模式(Kernel Mode)。其核心職責為抽象化底層硬體,統一管理與調度系統實體資源(CPU、主記憶體、I/O 裝置、儲存系統),並透過系統呼叫(System Calls)提供應用程式安全、受控的硬體存取服務。
-
第 (二) 小題:作業系統的 Shell Shell(命令解譯器/命令直譯器)是包覆於 Kernel 外部的使用者介面程式,運作於使用者模式(User Mode)。其功能在於提供人機互動介面,讀取使用者輸入的字元指令或腳本,解析語法後,轉換為相對應的系統呼叫或呼叫外部執行檔傳遞給 Kernel 執行,最後將執行結果呈現給使用者。常見實作如 Unix/Linux 環境下的 Bash、Zsh,以及 Windows 環境下的 Command Prompt 與 PowerShell。
-
第 (三) 小題:GUI 的英文全名 GUI 的英文全名為 Graphical User Interface(圖形使用者介面)。相較於傳統命令列介面(CLI),GUI 透過視窗(Windows)、圖示(Icons)、選單(Menus)與指標(Pointers)等視覺化圖形元素(WIMP 架構),讓使用者能以滑鼠或觸控等直覺動作與系統溝通。
-
第 (四) 小題:Process 與 Job 的差別
-
Job(工作/作業):屬於較高層次、使用者導向(User-oriented)的靜態概念。源自批次處理系統,指使用者提交給系統等待執行的整套任務,通常包含程式、資料與控制命令(如 JCL)。Job 尚未載入主記憶體前存放於次級儲存體(磁碟)的佇列中,由長程排程器(Job Scheduler)調配進入系統的資格。
-
Process(行程/進程):屬於較低層次、系統導向(OS-oriented)的動態概念。定義為「正在執行中的程式實體(a program in execution)」。當 Job 被選取載入主記憶體、分配專屬的記憶體空間(包含 Text、Data、Heap、Stack)並由作業系統建立行程控制區塊(PCB)後,即成為 Process,由 CPU 排程器(短程排程器)直接調派 CPU 執行。