Google Search Box

自訂搜尋

Tuesday, June 1, 2010

[課業] 98年高考程設第5題

作者: ineverlie (小黑夜) 看板: Examination
標題: [課業] 98年高考程設第5題
時間: Tue Jun 1 21:05:33 2010

1.考試科目:程式設計
2.章節名稱or篇名(單元關鍵字):98年高等考試
3.目前參考用書or考古題出處:98年高等考試第5題
4.想問的內容:
考慮C程式語言的位元運算(bitwise operation),
變數m和陣列(array)n的宣告如下:
unsigned int m; unsigned char n[4];
假設m的二進位值(binary value)為:
b32b31b30b29b28b27b26b25b24b23b22b21b20b19b18b17b16b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1
寫一個C語言的程式將陣列n的元素(element)設定為:
n[0]: b31b32b29b30b27b28b25b26
n[1]: b23b24b21b22b19b20b17b18
n[2]: b15b16b13b14b11b12b9b10
n[3]: b7b8b5b6b3b4b1b2
即是將m的二進位值,以每兩個位元一組,作位元調換(bit swap),
再切割成四個位元組。除了迴圈控制變數(loop control variable)外,
程式中不可使用+, -, *, /, %的算術運算(arithmetic operations)
(可以宣告和使用其他變數)。
5.想法:
高上的解答 http://www.get.com.tw/goldensun/exam/answer/98kp/PDF-K/K25.pdf
有點為難,我看不懂他解,這一題真的是這樣做嗎? 怎可能手寫出這樣的東西?
請問這一題該怎麼解呢? 或者是說思考的方向為?

1 comment:

  1. 推 alibodawahah:我們先想像上下兩排原始的stream..照題目原意.兩兩交 06/01 21:15
    → alibodawahah:換..可想像上面那排先右移.再跟0101..01這個MASK做 06/01 21:16
    → alibodawahah:AND,取我們只想要的部份;下面那排左移亦然.最後想像 06/01 21:16
    → alibodawahah:上下兩排的Stream做OR,剛好就會是原始的stream兩兩對 06/01 21:17
    → alibodawahah:調;這題正常人應該是沒辦法寫的像解答上那麼正式,但 06/01 21:18
    → alibodawahah:將上述的邏輯以自己能使用的語法表達出來.應該是還算 06/01 21:19
    → alibodawahah:ok..真的不行就用一些些虛擬碼代替..總比什麼都沒寫 06/01 21:19
    → alibodawahah:好上一些@@...這題看楊帥也是一步步慢慢推..而非一下 06/01 21:20
    → alibodawahah:子就寫出完整code 06/01 21:20
    → pharaoh7:說實在的 要在考試看到題目,然後就有上面的觀念..很難.. 06/01 21:22
    → sgacy:違反課業文 標題規定 請改正 06/01 21:28

    ReplyDelete