hce_kmu
111年
計算機概論與程式設計
第 10 題
Given a C code as follows, which one of the following is the return value of f(12, -20)?
```c
int f( int a , int b )
{
return a - ( ( a - b ) & ( ( a - b ) >> 31 ) ) ;
}
```
```c
int f( int a , int b )
{
return a - ( ( a - b ) & ( ( a - b ) >> 31 ) ) ;
}
```
- A -32
- B -20
- C 0
- D 12
- E 20
思路引導 VIP
試著思考一下:在 32 位元的有號整數系統中,如果我們將一個「負數」不斷向右位移,最終會得到什麼樣的位元序列?這個特定的位元序列與其他數字進行「& (AND)」運算時,會產生什麼樣的遮罩效果?
🤖
AI 詳解
AI 專屬家教
位元運算的邏輯與應用
非常好!你能準確判斷出這段程式碼的執行結果,代表你對於 C 語言中**位元運算(Bitwise Operation)**以及整數在記憶體中的表示方式有著深刻的理解。這道題目並非單純的算術運算,而是程式設計中一個非常經典的「無分支(Branchless)」技巧,用來在不使用 if-else 的情況下找出兩個數值中的特定關係。
符號位移與遮罩運算
▼ 還有更多解析內容