程式設計基礎(虛擬碼追蹤)
x 與 y 為8位元的無號整數。<< 與 >> 為邏輯移位,空出的位元補0,超出8位元的位元捨棄。∨ 表示逐位元的邏輯或。執行下列程式後 y 的值為下列何者?
8位元型: x ← 13, y
y ← (x << 2) ∨ (x >> 1)
- A27
- B54
- C58
查看答案與解析
正確答案:B. 54
13 的二進位為 00001101。x << 2 左移2位元得到 00110100 = 52,x >> 1 右移1位元得到 00000110 = 6(移出的最低位的1被捨棄)。邏輯或為 00110110 = 54。52 與 6 代表4的位元都是1,因此與相加的 52 + 6 = 58 不一致。
- A. 這是把移位方向弄反的 (x >> 2) ∨ (x << 1) = 3 ∨ 26 的值。
- B. 正確。00110100 ∨ 00000110 = 00110110 = 54。
- C. 這是相加而非做邏輯或的值。兩者有共同為1的位元(代表4的位元),因此不一致。