作者myIDis7 (個字)
看板Examination
標題Re: [考題] 計算機概論
時間Sat Jun 29 15:24:49 2013
※ 引述《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