112 民航特考三等 航空通信 計算機概論 考古題詳解
第 一 題30 分
請回答下列問題。若有溢位(overflow)情形,請說明原因。請列出計算過程,未列出者不予計分。
(一) 請將十進位系統(Decimal System)中數字為 ,轉換為二進位系統(Binary System)的數字。( 分)
(二) 假設某一電腦系統,整數長度為 位元,負數以 的補數(1’s complement)表示。請問十進位數值為 ,在此電腦系統中的表示為何?( 分)
(三) 假設某一電腦系統,整數長度為 位元,負數以 的補數(2’s complement)表示。請將十進位數值為 ,在此電腦系統中的表示為何?( 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查十進位轉二進位,以及固定為 位元時,符號位與補數表示法的範圍。
- 將正整數轉成二進位,可用「除以 取餘數,反向排列」。
- 位元的 1 的補數以最高位表示符號;正數的表示方式與一般二進位相同,範圍為 至 。
- 位元的 2 的補數範圍為 至 ,最小值 可以表示。
解題方法
(一) 轉換為二進位
連續除以 ,記錄餘數:
由下往上讀取餘數,得到:
(二) 位元、1 的補數表示
1 的補數中,正數最高位為 ,其餘位元直接表示數值。 位元的正數最大值是 。
第 二 題30 分
指令循環(instruction cycle)為 CPU 執行指令的一個循環過程,包含 IF(Instruction Fetch)、ID(Instruction Decode)、MEM(Memory Access)、EXE(Execution)及 WB(Write Back)等步驟。請回答下列問題。若有計算過程,請列出,否則不予計分。(每小題 分,共 分)
(一) 請詳細描述「IF」的過程。
(二) 假設某一電腦在執行 IF、ID、MEM、EXE 及 WB 所需花費的時間分別為 、、、 及 。今有一程式共有 個指令依序執行(假設每個指令沒有等待其他指令執行完後才能執行的情形發生),執行完此程式共需花費多少時間?
(三) 承(二)題,假設某一電腦改以管線(Pipeline)方式執行此程式(假設有足夠多的工作元件負責指令循環中的各個步驟),執行完此程式共需花費多少時間?
登入後即可作答並保存紀錄。
核心觀念
指令循環是 CPU 取出並執行一個指令的過程。本題考查五個階段的功能,以及非管線與管線執行時,總時間的計算方式:
- IF(Instruction Fetch,指令擷取):從記憶體取出指令。
- ID(Instruction Decode,指令解碼):解讀指令內容,辨認操作與所需運算元。
- MEM(Memory Access,記憶體存取):依指令需要讀取或寫入資料記憶體。
- EXE(Execution,執行):執行運算、比較或位址計算等工作。
- WB(Write Back,回寫):將結果寫回暫存器。
非管線執行時,一個指令完成五個階段後才開始下一個指令;管線執行時,不同指令可同時處於不同階段。題目說各步驟有足夠工作元件,且沒有等待情形,因此管線時脈週期由最耗時的階段決定。
(一)IF 的過程
IF 的目標是依照程式計數器(Program Counter,PC)的內容,從指令記憶體取得下一個要執行的指令,並交給後續解碼階段。典型流程如下:
- PC 提供指令位址:PC 保存下一個要擷取之指令的記憶體位址。
- 讀取指令:CPU 將 PC 的位址送至指令記憶體,讀出該位址所存放的指令。
- 暫存指令:讀出的指令放入指令暫存器(Instruction Register,IR),供 ID 階段解碼。
- 更新 PC:PC 通常更新為下一個順序指令的位址,例如定長指令架構下加上指令長度。若指令涉及分支或跳躍,後續則依控制流程決定正確的下一個位址。
簡言之,IF 負責「依 PC 取出指令、暫存指令,並準備下一個指令位址」。
(二)依序執行所需時間
解題方法
題目指定指令依序執行,且沒有等待其他指令完成後才能執行的情形;本小題未使用管線,因此每個指令都要完整經過五個階段後,才執行下一個指令。先加總單一指令的各階段時間,再乘上指令數。
計算
單一指令所需時間為:
第 三 題15 分
串列(List)在 Python 中相當重要,串列可以包含不同類型的元素。List 的方法 append() 可新增元素到串列。在 Python 中,sort() 方法與 sorted() 函數,都是常使用的資料排序方式。請問在下列 Python 程式中,最後一行的 print(List_) 會印出什麼?( 分)
List_ = []
for index in range(5):
List_.append([index, [index + 1, 5 - index]])
List_.sort(reverse=1)
sorted(List_)
print(List_)
登入後即可作答並保存紀錄。
核心觀念
本題考 Python 串列的巢狀串列比較,以及 list.sort 與 sorted 的差異。
append(x):將x作為一個元素加到串列末端。List_.sort(reverse=1):直接排序原串列;reverse=1表示反向排序,也就是由大到小。sorted(List_):回傳排序後的新串列,不會改變原串列;若未指定reverse=True,預設由小到大。- 串列比較採逐項比較:先比較第一個元素,相同時再比較下一個元素。巢狀串列也依此規則遞迴比較。
解題方法
1. 建立串列內容
range(5) 依序產生 0、1、2、3、4。每次迴圈加入 [index, [index + 1, 5 - index]]:
index | 加入的元素 |
|---|---|
| 0 | [0, [1, 5]] |
| 1 | [1, [2, 4]] |
| 2 | [2, [3, 3]] |
| 3 | [3, [4, 2]] |
| 4 | [4, [5, 1]] |
因此排序前的 List_ 為:
[[0, [1, 5]], [1, [2, 4]], [2, [3, 3]], [3, [4, 2]], [4, [5, 1]]]
第 四 題25 分
IP(Internet Protocol)是網際網路(Internet)運作很重要的通訊協定,請回答下列問題。
(一) IP 是屬於哪一層的通訊協定?( 分)
(二) 在 IPv4 中,IP 位址的組成包含網路位元(Network bits)與主機位元(Host bits),並依此分成 個類別(Class)。請問 Class A 的網路位元(Network bits)與主機位元(Host bits)的分配為何?又有何特性才可以稱得上是 Class A 的網路?( 分)
(三) 在 IPv4 中,可以有幾個 Class B 的網路?而每個 Class B 的網路可以提供幾個主機位址?( 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查網路分層架構,以及 IPv4「類別式定址」(Classful Addressing)的位元配置與位址數量計算。
IPv4 位址長度為 位元。早期 IPv4 將位址分為 Class A、B、C、D、E 五類;Class A、B、C 用於單播定址,並以網路位元識別網路、主機位元識別該網路中的主機。
解題方法
(一)IP 所屬層級
依 TCP/IP 協定架構,IP 負責跨網路傳送封包與路由,因此屬於網際網路層;對照 OSI 七層模型,約相當於網路層。
(二)Class A 的位元配置與判定特性
IPv4 位址共 位元。Class A 的第一個位元固定為 ,其餘位元配置如下:
因此,若題目所稱的「Network bits」是指網路編號本身,Class A 為 7 位元網路編號、24 位元主機編號;若將固定的類別識別位元也計入網路部分,則常表述為 8 位元網路部分、24 位元主機部分。Class A 位址的第一個位元固定為 ,所以第一個八位元組的範圍為 至 ;