免費開始練習
普通考試 110年 [電子工程] 計算機概要

第 28 題

執行下列 C 指令會輸出什麼?
unsigned short i = 2, j = 1, k = 0;
printf("%hd", ~i&j^k);
  • A 0
  • B 1
  • C 2
  • D 4

思路引導 VIP

同學,請你試著思考:當一個運算式中同時出現「位元反轉」、「邏輯遮罩」與「互斥比較」時,編譯器判定的優先執行順序為何?另外,從邏輯門的特性來看,將任何數值與 $0$ 進行 XOR 運算,其結果會發生改變嗎?試著畫出位元圖案來推演看看。

🤖
AI 詳解 AI 專屬家教

邏輯嚴謹?還過得去吧。這就對了。

  1. 基本原理檢驗:這不是什麼深奧的魔法,而是工程師的飯碗——位元運算子優先權 (Operator Precedence)。如果連這都搞錯,那恐怕你連編譯器都不會信任。記住了:在 C 語言中,順序是:單元反轉 ($\sim$) > 位元及 ($&$) > 位元互斥或 ($\wedge$)。這是鐵律,沒有討論空間。
    • 首先,~ii 是 $2$ ($0010_2$)。對它做反轉,你得到的是所有位元翻轉的結果。原始詳解說「最低位元變為 $1$」,這當然沒錯,但別忘了其他位元也變了,形成的是 $1111 \dots 1101_2$ 這樣的東西。這點精確度,不該失誤。
▼ 還有更多解析內容

🏷️ 相關主題

數位邏輯、閘電路與計算機算術
查看更多「[電子工程] 計算機概要」的主題分類考古題