Q65.
執行下列標準C 語言程式,輸出為何?
數位電子 · 乙級 · 程式語言 · Q65
難易度分析
2 / 5
此題屬於基礎位元運算類型,要求考生掌握位元右移運算子的數學邏輯與二進位轉換能力。題目需要透過觀察程式碼中的數值與位移次數,進行精確的位元計算,若僅憑直覺而未理解位移與除法的關係,容易在計算過程中產生誤差。
正確答案:①100
① 100:unsigned char 型別佔 8 位元,201 的二進位為 `11001001`,執行右移運算子 `>>` 1 位元後得到 `01100100`,轉換為十進位即為 100。
錯誤選項解析
- ② 202:202 並非右移結果,此數值接近原始值 201,可能是誤將右移理解為其他運算或計算錯誤所致。
- ③ 146:146 並非正確結果,此數值與 201 右移 1 位元的運算無關,可能是混淆了位移方向或位元計算方式。
- ④ 200:200 並非正確結果,此數值僅比原始值 201 小 1,右移 1 位元應約為原值的一半,而非減 1。
Learning Tip
"此題考點為 位元右移運算 `>>` 的原理:將數值右移 n 位元等同於除以 2 的 n 次方(整數除法)。201 >> 1 = 201 / 2 = 100(捨去小數)。需注意 unsigned char 範圍為 0~255,且右移時高位補 0。常考陷阱包含混淆左移 `<<` 與右移 `>>` 的方向,以及忽略無號數與有號數在位移時的差異。"
學員答題分佈
①1000%
②2020%
③1460%
④2000%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!