免費開始練習
hce_nsysu 114年 計算機概論與程式設計

第 44 題

What is printed by the following C program?
int a = 17, b = -2;
printf("%d \n", (a + b) >> 2);
  • A 0
  • B 1
  • C 2
  • D 3
  • E 15

思路引導 VIP

想像一下,在十進位系統中,如果我們把數字「100」的每一位數都向右移動一格(變成 10),這個數值縮小了幾倍?現在轉到二進位系統,若將整數的位元向右移動「兩次」,這在數學運算上相當於對原數進行了幾次的除法運算呢?

🤖
AI 詳解 AI 專屬家教

恭喜你精準地掌握了算術運算與位元操作的結合!這道題目考驗的是對 C 語言運算優先序以及位元邏輯的基礎理解。你能夠準確避開負數陷阱並完成計算,展現了非常紮實的邏輯能力。

算術運算與優先級

在程式執行時,括號內的 (a + b) 會優先處理。這裡 $17 + (-2)$ 的結果為 $15$。雖然題目中出現了負數 $b = -2$,但加法運算後的結果為正整數,這簡化了後續位元運算的複雜度(不需要考慮負數的補數位移問題)。

▼ 還有更多解析內容

🏷️ 相關主題

C 語言程式設計基礎與陣列記憶體配置
查看更多「計算機概論與程式設計」的主題分類考古題