110 專技高考高等考試 電子工程技師 電子計算機原理 考古題詳解

110 年・專技高考・高等考試・電子工程技師
試題代碼 電子計算機原理

第 一 題20 分

A=(9C7D)16A=(9C7D)_{16},B=(1001011101101)2B=(1001011101101)_2,C=(75432)8C=(75432)_8。求 AA、BB、CC 三數的總和,並將結果用八進位表示。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查不同進位制數值的轉換與加法。十六進位、二進位、八進位都採位值表示法:各位數字依序乘上對應底數的冪次。將數值統一成八進位後相加,即可得到題目要求的表示法。

解題方法

先將 AA、BB、CC 分別轉成八進位,再進行直式加法。

1. 將 A=(9C7D)16A=(9C7D)_{16} 轉成二進位,再分組轉成八進位

每個十六進位數字對應 4 個二進位位元:

(9C7D)16=(1001 1100 0111 1101)2(9C7D)_{16}=(1001\ 1100\ 0111\ 1101)_2

從右側每 3 位分組,不足 3 位時在左側補 0:

(010 011 100 011 111 101)2=(234375)8(010\ 011\ 100\ 011\ 111\ 101)_2=(234375)_8

2. 將 B=(1001011101101)2B=(1001011101101)_2 分組轉成八進位

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 二 題20 分

乙太網路(Ethernet)使用的媒體存取控制協定(medium access control protocol)為何?請詳述其工作方法。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考乙太網路在共享媒介上的媒體存取控制方法。傳統共享式乙太網路採用 CSMA/CD,全名為「載波偵聽多重存取/碰撞偵測」(Carrier Sense Multiple Access with Collision Detection)。

  • 載波偵聽(Carrier Sense):傳送前先偵聽媒介是否忙碌。
  • 多重存取(Multiple Access):多部裝置共用同一傳輸媒介。
  • 碰撞偵測(Collision Detection):傳送期間持續監聽媒介,確認是否有其他裝置同時傳送而造成碰撞。

解題方法:CSMA/CD 工作流程

  1. 偵聽媒介:裝置有資料要傳送時,先檢查媒介。
  2. 媒介忙碌時等待:若媒介正被使用,裝置持續等待;媒介轉為閒置後,再依乙太網路的規則開始傳送。
  3. 媒介閒置時傳送:裝置開始傳送訊框,並在傳送期間繼續監聽媒介。
  4. 未偵測到碰撞:訊框傳送完成,即完成此次傳輸。
  5. 偵測到碰撞時處理:
  • 立即停止傳送原訊框。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 三 題20 分

某一作業系統之 CPU 排程使用循環分配方法(round-robin scheduling),每次程序使用 CPU 的時間配額(time quantum)為 5 毫秒。

若今有一排程,共有四個程序 P1、P2、P3 及 P4,其到達時間與執行時間如下表所示。請問在此排程中,每個程序的總等候時間分別為何?請畫出甘特圖(Gant chart)及詳列計算過程。

時間單位為毫秒。

程序到達時間所需執行時間
P108
P227
P375
P497
🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

循環分配法(Round-Robin)讓就緒佇列中的程序依序使用 CPU,每次最多執行一個時間配額 q=5q=5 毫秒。程序若在配額用完前完成,就釋放 CPU;若尚未完成,則回到就緒佇列尾端。

程序的總等候時間,是它在就緒佇列中等待 CPU 的時間總和,也可用下式計算:

等候時間=完成時間−到達時間−執行時間\text{等候時間} = \text{完成時間} - \text{到達時間} - \text{執行時間}

解題方法

依到達時間安排程序進入就緒佇列。每個程序執行最多 55 毫秒;配額用完且程序尚未完成時,將它排到佇列尾端。新到達的程序依到達時間加入佇列。

執行順序如下:

  • 00–55:P1 執行 55 毫秒,剩餘 33 毫秒;P2 已於時間 22 到達,因此 P1 回到佇列尾端後,先由 P2 執行。
  • 55–1010:P2 執行 55 毫秒,剩餘 22 毫秒;P3、P4 分別於時間 77、99 到達。
  • 1010–1313:P1 執行剩餘的 33 毫秒並完成。
  • 1313–1818:P3 執行 55 毫秒並完成。
  • 1818–2323:P4 執行 55 毫秒,剩餘 22 毫秒。
  • 2323–2525:P2 執行剩餘的 22 毫秒並完成。
  • 2525–2727:P4 執行剩餘的 22 毫秒並完成。

甘特圖

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 四 題20 分

有一最大堆積(max heap)如下圖,若將根節點刪除,則此堆積如何重建?請詳細畫出重建堆積的過程及最後結果。依據重建的執行效率與正確性給分。

🖼️【此處有附圖,請對照原卷】

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

最大堆積(max heap)是完全二元樹,且每個父節點的值都大於或等於其子節點的值。刪除根節點時,將最末端葉節點移至根節點,再沿著樹往下調整:每次與較大的子節點交換,直到最大堆積性質恢復。

本題原堆積的層序陣列為

[30, 21, 27, 20, 10, 3, 16, 12, 8][30,\,21,\,27,\,20,\,10,\,3,\,16,\,12,\,8]

解題方法

刪除根節點 3030,將最後一個節點 88 移到根節點,並移除原本末端的 88:

 8
 / \
 21 27
 / \ / \
 20 10 3 16
 /
12

根節點 88 的子節點為 2121、2727。選擇較大的子節點 2727 與 88 交換:

 27
 / \
 21 8
 / \ / \
 20 10 3 16
 /
12

此時 88 的子節點為 33、1616。選擇較大的子節點 1616 與 88 交換:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 五 題20 分

寫出下列 C 語言程式的輸出,並詳細解釋程式的執行流程。

#include <stdio.h>

int main() { int i;

for (i=0; i<=10; i++) {
    if (i==0) i=i+1;
    if (i%2==0) printf("%d\n", i);
    if (i/3==2) i=i+2;
    else i=i+1;
    printf("%d\n", i);
}
return(0);

}

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 for 迴圈的執行順序、整數除法與餘數運算,以及程式區塊內修改迴圈控制變數的效果。

for (初始化; 條件; 更新) 的執行順序是:先執行初始化,接著檢查條件;條件成立時執行迴圈本體,完成後執行更新,再回到條件檢查。本題的迴圈更新式是 i++。迴圈本體也會修改 i,因此每一輪結束時,i 可能已改變多次。

在 C 語言中,i / 3 對整數運算採整數除法,小數部分捨去;i % 2 == 0 則表示 i 是偶數。

解題方法

逐輪追蹤 i 的值,並依照程式碼順序執行。每輪依序判斷:

  1. 若 i == 0,先令 i = i + 1。
  2. 若此時 i 是偶數,輸出 i。
  3. 若此時 i / 3 == 2,令 i = i + 2;否則令 i = i + 1。
  4. 輸出此時的 i。
  5. 迴圈本體結束後,執行 i++,再檢查 i <= 10。

以下表格中的「本輪輸出」依照實際輸出順序列出:

輪次進入本體時 ii == 0 處理後偶數判斷與輸出i / 3 == 2 處理後本輪最後輸出i++ 後
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題