Re: [考題] 計算機概論

看板Examination作者 (個字)時間11年前 (2013/06/29 15:24), 編輯推噓5(5015)
留言20則, 4人參與, 最新討論串6/7 (看更多)
※ 引述《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

06/29 15:54, , 1F
感謝!另外請問為什麼後者的成本較少?
06/29 15:54, 1F

06/29 16:02, , 2F
32+256=288 < 64+128=192
06/29 16:02, 2F

06/29 16:03, , 3F
>
06/29 16:03, 3F

06/29 16:04, , 4F
< 這是筆誤
06/29 16:04, 4F

06/29 16:06, , 5F
豁然開朗, 感謝!
06/29 16:06, 5F

06/29 18:32, , 6F
可以跟我說一下為什麼第一題是兩次嗎? 3Q
06/29 18:32, 6F

06/29 19:01, , 7F
簡單說#define是前置處理指令 作用是定義一個tag之類
06/29 19:01, 7F

06/29 19:02, , 8F
的東西在最前面 之後程式只要一碰到該tag就自動取代
06/29 19:02, 8F

06/29 19:02, , 9F
成用#define定義的內容
06/29 19:02, 9F

06/29 19:03, , 10F
例如你前面寫#define x 100 則之後只要看到x就都是100
06/29 19:03, 10F

06/29 19:03, , 11F
直接把x取代成100
06/29 19:03, 11F

06/29 19:05, , 12F
然後這題,基本上就是直接拿++n放到a的位置做取代
06/29 19:05, 12F

06/29 19:05, , 13F
有幾個a你就取代幾次,因為是兩次所以加兩次
06/29 19:05, 13F

06/29 19:05, , 14F
原本是10後來就變成12
06/29 19:05, 14F

06/29 19:06, , 15F
基本上就是考#define跟副程式有什麼差別... 以上
06/29 19:06, 15F

06/29 19:07, , 16F
如果這樣還不懂的話...你就想像成...
06/29 19:07, 16F

06/29 19:08, , 17F
當程式碰到MAX()的時候會去找#define內容
06/29 19:08, 17F

06/29 19:09, , 18F
然後程式中的MAX()會變成 a>b?a:b 其中a都是++n
06/29 19:09, 18F

06/29 19:09, , 19F
就這樣
06/29 19:09, 19F

06/30 01:34, , 20F
萬分感謝 3q
06/30 01:34, 20F
文章代碼(AID): #1Hpel4wX (Examination)
討論串 (同標題文章)
文章代碼(AID): #1Hpel4wX (Examination)