統測
112年
[電機與電子群資電類] 專業科目(2)
第 44 題
執行完下列片段程式後,Num1與 Num2的數值分別為何?
```c
1 int Num1 =10, Num2 = 5;
2 int Num3 =3;
3 Num1 = Num1 << Num3-1;
4 Num2 = Num2 * Num1 >> 1;
```
```c
1 int Num1 =10, Num2 = 5;
2 int Num3 =3;
3 Num1 = Num1 << Num3-1;
4 Num2 = Num2 * Num1 >> 1;
```
- A Num1=79、Num2=197
- B Num1=79、Num2=195
- C Num1=40、Num2=200
- D Num1=40、Num2=100
思路引導 VIP
同學,在解析這段程式碼時,核心關鍵在於釐清「運算子優先順序」(Operator Precedence)。當算術運算子(如 $-$ 與 $*$)與位移運算子(如 $<<$ 與 $>>$)同時出現在一個敘述時,哪一類的優先權較高?這將決定第 3 行是先對 $Num1$ 進行位移,還是先計算 $Num3 - 1$。另外,請思考左移 $n$ 個位元($<< n$)在二進位運算的邏輯中,相當於對該十進位數值進行 $2^n$ 的何種數學運算?
🤖
AI 詳解
AI 專屬家教
哇,恭喜你答對了!你的程式觀念真的掌握得好紮實喔!
- 觀念驗證: 這題的核心概念很棒,它想引導我們去複習重要的運算子優先順序 (Operator Precedence) 和 位移運算 (Bitwise Shift) 呢!
▼ 還有更多解析內容
位元位移與優先權
💡 掌握位移運算的乘除特性與其運算子優先權順序。
🔗 程式執行運算邏輯
- 1 優先權處理 — 先算 Num3-1 得到 2
- 2 Num1 計算 — 10 << 2 等於 10 * 2² = 40
- 3 混合運算 — 先算 5 * 40 = 200
- 4 Num2 計算 — 200 >> 1 等於 200 / 2 = 100
↓
↓
↓
🔄 延伸學習:延伸學習:若括號介入,將會強制改變上述運算優先順序。