電子工程 108 年計算機概論考古題
題目為考試當年公告版本,實務標準請以現行規範為準。
㈠電子計算機資料的表示方式採用2 的補數表示法,如果記憶體內容只 有4 個位元長度,請問可表示的整數範圍為何?又0100+1101 與 0100+0101 的十進位值各為何?(15 分) ㈡請利用NOT,OR,與XOR 邏輯閘設計1 個比較器,其輸入為2 個四 位元A3A2A1A0與B3B2B1B0的邏輯線路,如輸入A3A2A1A0與B3B2B1B0 的值相同,則輸出A = B 為1,否則,輸出A = B 為0,例如,輸入 A3A2A1A0 = 1100,B3B2B1B0 = 1100,則輸出A = B 為1,反之,輸入 A3A2A1A0 = 1100,B3B2B1B0 = 1111,則輸出A = B 為0。(15 分)
在TCP/IP 網際網路協定中,在傳輸層(Transport Layer)的協定有TCP 和UDP。何者可以提供可靠的傳輸(Reliable Transmission)?並試述對 應的設計機制?(15 分)
將資訊加密傳送是網路上防範機密資訊外洩的主要方法,目前兩種通用 的加密技術為對稱加密法(Symmetric Encryption)與非對稱加密法 (Asymmetric Encryption),請試述這兩種加密方法。(10 分)
利用陣列來實作堆疊,給予如下C 語言的宣告及建立堆疊(create_stack) 的程式片段:(20 分) #define MAX_STACK 100 typedef int ITEM_TYPE; typedef struct stack_type { ITEM_TYPE items[MAX_STACK]; int top; }STACK_TYPE; void create_stack (STACK_TYPE *stack) { stack -> top = 0; } 在不考慮堆疊滿(Full)及空(Empty)的條件下,請寫出堆疊的push 及 pop 程式片段;push 程式片段係先輸入新資料後,再移動指標; pop 程 式片段係先移動指標後,再取出資料。 void push (STACK_TYPE *stack, ITEM_TYPE new_item) { } void pop (STACK_TYPE *stack, ITEM_TYPE *old_item) { }
給予一串資料:40,25,35,60,63,55,18,76,請畫出將此串資料 依序建成的二元搜尋樹(Binary Search Tree),之後,如何利用此二元搜 尋樹來進行這些資料由小至大的排序(Sorting)?最後,給予如下二元 樹節點的C 語言宣告,請完成此排序的遞迴程式。(25 分) #include <stdio.h> #include <stdlib.h> struct node{ int data; struct node *left; struct node *right; }; typedef struct node *NODEPTR; void sort (NODEPTR tree) { }
詳細解釋下列Java 語言程式的執行過程,並寫出程式的輸出。(20 分) public class testA { static void multiply(int[] item) { for (int idx = 0; idx < item.length; idx++) item[idx] = item[idx] * 2; } static void add(int value) { value += 1; } public static void main (String[] args) { int[] nums = {1, 3, 5, 7, 9}; add(nums[1]); add(nums[2]); add(nums[3]); multiply(nums); for (int idx = 0; idx < nums.length; idx++) System.out.println(nums[idx]); } }