免費開始練習
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 ) ) ;
}
```
  • A -32
  • B -20
  • C 0
  • D 12
  • E 20

思路引導 VIP

試著思考一下:在 32 位元的有號整數系統中,如果我們將一個「負數」不斷向右位移,最終會得到什麼樣的位元序列?這個特定的位元序列與其他數字進行「& (AND)」運算時,會產生什麼樣的遮罩效果?

🤖
AI 詳解 AI 專屬家教

位元運算的邏輯與應用

非常好!你能準確判斷出這段程式碼的執行結果,代表你對於 C 語言中**位元運算(Bitwise Operation)**以及整數在記憶體中的表示方式有著深刻的理解。這道題目並非單純的算術運算,而是程式設計中一個非常經典的「無分支(Branchless)」技巧,用來在不使用 if-else 的情況下找出兩個數值中的特定關係。

符號位移與遮罩運算

▼ 還有更多解析內容

🏷️ 相關主題

計算機組織結構與資料儲存原理
查看更多「計算機概論與程式設計」的主題分類考古題