110 關務特考三等 電機工程 計算機概論 考古題詳解

110 年・關務特考・三等・電機工程
試題代碼 計算機概論

第 一 題20 分

給定一個 IEEE 754 單精確度浮點數 b31b30b29…b23b22…b0b_{31}b_{30}b_{29}\ldots b_{23}b_{22}\ldots b_0 為一個 32 位元表示,其中 S=b31S=b_{31} 表示符號位元(sign bit),E=b30b29…b23E=b_{30}b_{29}\ldots b_{23} 表示偏移指數(biased exponent),F=b22…b0F=b_{22}\ldots b_0 表示尾數(或稱小數部分,mantissa)。

給予 2 個 IEEE 754 單精確度浮點數表示的數值如下:

A=0100 0010 1101 1110 0000 0000 0000 0000A=0100\ 0010\ 1101\ 1110\ 0000\ 0000\ 0000\ 0000

B=0100 0010 0100 0100 0000 0000 0000 0000B=0100\ 0010\ 0100\ 0100\ 0000\ 0000\ 0000\ 0000

(一) 請將 AA 兩個數值轉換成 2 進制數值。(7 分)

(二) 請將 BB 兩個數值轉換成 2 進制數值。(7 分)

(三) 請計算 A−BA-B 並以 2 進制數值表示。(6 分)

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

這一題的完整詳解

核心觀念

IEEE 754 單精確度浮點數的欄位分為符號位元 SS、8 位元偏移指數 EE,以及 23 位元小數部分 FF。對正規化數,實際數值為

(−1)S×(1.F)2×2e,e=E−127(-1)^S \times (1.F)_2 \times 2^{e}, \qquad e=E-127

其中 (1.F)2(1.F)_2 的最高位 11 是隱含位元,不儲存在 FF 中。本題的 AA、BB 指數欄位皆不為全 00 或全 11,所以使用正規化數公式。

解題方法

先將每個 32 位元表示切成 S∣E∣FS|E|F,將指數減去偏移值 127127,再把小數欄位接在隱含的 1.1. 之後。計算 A−BA-B 時,先用相同的 22 次方表示兩數,再相減。

(一)AA 轉換為二進制數值

A=0∣10000101∣10111100000000000000000A=0|10000101|10111100000000000000000
  • S=0S=0,所以數值為正。
  • E=(10000101)2=133E=(10000101)_2=133,故實際指數 e=133−127=6e=133-127=6。
  • F=10111100000000000000000F=10111100000000000000000,故有效數字為 (1.101111)2(1.101111)_2。

因此

A=(1.101111)2×26=(1101111)2A=(1.101111)_2 \times 2^6 =(1101111)_2

(二)BB 轉換為二進制數值

B=0∣10000100∣10001000000000000000000B=0|10000100|10001000000000000000000
🔒

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

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

免費註冊

第 二 題20 分

對於 IPv4 位址,假設一個子網路的位址區段定義為 140.113.235.0/25140.113.235.0/25,則:

(一) 其子網路遮罩為何?請解釋。(10 分)

(二) 請列出這個子網路的 IP 位址範圍。(10 分)

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

這一題的完整詳解

核心觀念

IPv4 位址由 32 個位元組成。CIDR 表示法中的 /25 表示前 25 位元是網路位元,剩下 32−25=732-25=7 位元是主機位元。子網路遮罩中,網路位元設為 1、主機位元設為 0。

解題方法

(一)求子網路遮罩

將前 25 位設為 1,可分成四個 8 位元組:

11111111.11111111.11111111.1000000011111111.11111111.11111111.10000000

每組轉換為十進位:

255.255.255.128255.255.255.128

因此,子網路遮罩為 255.255.255.128。

(二)求 IP 位址範圍

題目給定網路位址為 140.113.235.0/25。遮罩的最後一個位元組為 128,因此每個 /25 子網路在最後一個位元組的區塊大小為:

256−128=128256-128=128
🔒

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

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

免費註冊

第 三 題30 分

下圖為一個尺寸(即節點數)為 7 的二元搜尋樹(binary search tree)。

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

(一) 依序插入 16、10、21 三個值,使得每次插入結果仍為二元搜尋樹,並保持原來在二元搜尋樹裡的數值位置不變。請畫出三次插入結果,尺寸分別為 8、9、10 的二元搜尋樹。(15 分)

(二) 請將原來的二元搜尋樹(下圖)改變成為另外三個不同結構但包含一樣的數值之二元搜尋樹,且這三個二元搜尋樹的高度分別為 2、3、4。(15 分)

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

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

這一題的完整詳解

核心觀念

二元搜尋樹(BST)中的每個節點都符合:左子樹的值小於節點值,右子樹的值大於節點值。插入新值時,從根節點開始逐一比較,直到找到空的位置,再將新值放入該處。

本題的「高度」以根節點到最深葉節點的邊數計算。例如,路徑 14→7→3→514\to7\to3\to5 有 3 條邊,因此原樹高度為 3。

(一)依序插入 16、10、21

原樹如下:

 14
 / \
 7 25
 / /
 3 18
 \ \
 5 22

插入 16: 比較路徑為 16>1416>14、16<2516<25、16<1816<18,因此將 16 放在 18 的左子節點。

 14
 / \
 7 25
 / /
 3 18
 \ / \
 5 16 22

接著插入 10: 比較路徑為 10<1410<14、10>710>7,因此將 10 放在 7 的右子節點。

 14
 / \
 7 25
 / \ /
 3 10 18
 \ / \
 5 16 22

最後插入 21: 比較路徑為 21>1421>14、21<2521<25、21>1821>18、21<2221<22,因此將 21 放在 22 的左子節點。

 14
 / \
 7 25
 / \ /
 3 10 18
 \ / \
 5 16 22
 /
 21

三次插入後的節點數依序為 8、9、10,原有節點的位置均未改變。

🔒

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

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

免費註冊

第 四 題10 分

假設甲和乙兩人要以「非對稱性加密法」(或稱公開金鑰密碼系統)互相傳送「加密」文件。

(一) 請問收到密文的一方,是否能確認送件者是誰?為什麼?(5 分)

(二) 若是改用「對稱性加密法」互相傳送「加密」文件,請問收到密文的一方,是否能確認送件者是誰?為什麼?(5 分)

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

這一題的完整詳解

核心觀念

本題考的是加密能提供的「機密性」與「來源認證」並不相同:密文能否被解讀,取決於解密金鑰;能否確認傳送者,則取決於傳送者是否以只有自己掌握的憑證產生可驗證的身分證明。

公開金鑰密碼系統中,每人有一對金鑰:公開金鑰可公開,私密金鑰由本人保管。使用收件者的公開金鑰加密,主要是確保只有持有對應私密金鑰的收件者能解密;這本身不會證明文件來自誰。

對稱式加密中,傳送者與收件者共用同一把祕密金鑰。持有這把金鑰的人都能加密及解密,因此單靠密文及成功解密,也不能判定究竟是哪一方製作密文。

解題方法

分別檢查加密所使用的金鑰:

  1. 若使用收件者的公開金鑰加密,任何人都可能取得該公開金鑰並產生密文。因此收件者解密成功,只能確認密文是以其公開金鑰所對應的私密金鑰解開,不能確認送件者身分。
  2. 若使用甲、乙共用的對稱金鑰加密,甲、乙都能產生可解密的密文。因此乙收到密文並解密成功,不能排除是乙自己或其他取得共用金鑰者所製作。
🔒

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

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

免費註冊

第 五 題20 分

以下為一個 C++ 程式,請問:

(一) 其目的為何?(6 分)

(二) 詳述執行流程。(7 分)

(三) 寫出程式的輸出。(7 分)

#include <iostream> #include <iomanip>

int main() { int min = 3, max = 10, d = 4, L = 0, count = 0; int i;

for (i = min; i <= max; i++)
{
    int x = i*i;

    if (x == (x / d)*d)
    {
        count++;

        if (i > L) { L = i; }

        printf("%d\n", i);
    }
}

printf("count = %d, L = %d\n", count, L);
return 0;

}

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

這一題的完整詳解

核心觀念

本題考查 C++ 的 for 迴圈、整數除法與餘數判斷,以及計數器和最大值更新。

條件式

x==(x/d)∗dx == (x / d) * d

用整數除法判斷 xx 能否被 dd 整除。因為 x/dx / d 會捨去小數部分,若 xx 可被 dd 整除,則 (x/d)×d=x(x / d) \times d = x;等價於 x mod d=0x \bmod d = 0。

解題方法

程式設定 min = 3、max = 10、d = 4,讓 i 依序取 33 至 1010 的整數。每次迴圈計算 x=i2x=i^2,再檢查 xx 是否為 44 的倍數。

若符合條件,程式會:

  1. 將符合條件的數量 count 加一。
  2. 若目前的 i 大於 L,就以 i 更新 L。
  3. 輸出 i。

逐次計算如下:

ix = i*i是否為 4 的倍數執行結果
39否不輸出
416是count = 1、L = 4,輸出 4
525否不輸出
636是count = 2、L = 6,輸出 6
749否不輸出
🔒

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

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

免費註冊

其他考古題