看板 Examination 關於我們 聯絡資訊
※ 引述《tsamarfi (一 擊 入 魂)》之銘言: : 請各位不吝指教, 謝謝. : 1. 99普考 第26題 : #include<stdio.h> : #define MAX(a, b) a>b?a:b : int main() : { : int m=10, n=10; : printf("%d", MAX(++n, m)); : return 0; : } : 選項:(A)10 (B)11 (C)12 (D)13 : 答案:(C) : 想法:++n後n=11, n>m, 應該判對判斷為11不是嗎? MAX(++n, m) 呼叫++a>b?++a:b 因此++a兩次 : 2. 99鐵路 第一題 : 假設某程式運行在一有完美快取(cache)(不會發生任何快取錯失cache miss)的系統 : 上時, 其CPI(每指令所需時周期數cycles per instruction)為2. 在實際系統上, : 指令快取(instruction cache)有1%的錯失率(miss rate)且資料快取(data rate)有 : 5%的錯失率. 若此程式有40%的指令是載入/儲存(load/store)指令, 每次錯失(miss) : 發生時需要等待100個時脈週期(cycles), 則實際系統上程式執行的CPI為何? : 選項:(A)3 (B)4 (C)5 (D)6 : 答案:(C) : 想法:無 CPI為 2 + ( 0.01 + 0.05*0.4 ) * 100 完美 指令miss 資料miss miss須多等 : 3. 98普考 第17題 : 對於一個8Kx4的隨機存取記憶體(random-access memory, RAM),若採二維解碼結構 : (2-dimentional decoding structure),則所需的最少解碼電路為: : (A)一個五輸入(input)線解碼器(line decoder),一個八輸入線解碼器 : (B)一個六輸入線解碼器,一個七輸入線解碼器 : (C)一個六輸入線解碼器,一個九輸入線解碼器 : (D)一個七輸入線解碼器,一個八輸入線解碼器 : 答案:(B) : 想法:只知道加起來要13, 所以排除C和D, 僅此而已. "最少"的解碼電路 2^5 + 2^8 與 2^6 + 2^7 後者需要較少成本 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.4.183
tsamarfi:感謝!另外請問為什麼後者的成本較少? 06/29 15:54
atb: 32+256=288 < 64+128=192 06/29 16:02
atb: > 06/29 16:03
atb:< 這是筆誤 06/29 16:04
tsamarfi:豁然開朗, 感謝! 06/29 16:06
steelheart3:可以跟我說一下為什麼第一題是兩次嗎? 3Q 06/29 18:32
ARCHERDEVIL:簡單說#define是前置處理指令 作用是定義一個tag之類 06/29 19:01
ARCHERDEVIL:的東西在最前面 之後程式只要一碰到該tag就自動取代 06/29 19:02
ARCHERDEVIL:成用#define定義的內容 06/29 19:02
ARCHERDEVIL:例如你前面寫#define x 100 則之後只要看到x就都是100 06/29 19:03
ARCHERDEVIL:直接把x取代成100 06/29 19:03
ARCHERDEVIL:然後這題,基本上就是直接拿++n放到a的位置做取代 06/29 19:05
ARCHERDEVIL:有幾個a你就取代幾次,因為是兩次所以加兩次 06/29 19:05
ARCHERDEVIL:原本是10後來就變成12 06/29 19:05
ARCHERDEVIL:基本上就是考#define跟副程式有什麼差別... 以上 06/29 19:06
ARCHERDEVIL:如果這樣還不懂的話...你就想像成... 06/29 19:07
ARCHERDEVIL:當程式碰到MAX()的時候會去找#define內容 06/29 19:08
ARCHERDEVIL:然後程式中的MAX()會變成 a>b?a:b 其中a都是++n 06/29 19:09
ARCHERDEVIL:就這樣 06/29 19:09
steelheart3:萬分感謝 3q 06/30 01:34