程式設計基礎(虛擬碼追蹤)
∧ 表示逐位元的邏輯與。執行下列程式後 c 的值為下列何者?
整數型: x ← 200, c ← 0
while (x ≠ 0)
x ← x ∧ (x − 1)
c ← c + 1
endwhile
- A3
- B5
- C8
查看答案與解析
正確答案:A. 3
x ∧ (x − 1) 這個位元運算會把 x 最低位的1位元變為0。這是因為在 x − 1 中,最低位的1變為0,其下的0全部變為1,取邏輯與之後只有這部分變為0。200 = 11001000 依序變為 11000000 = 192、10000000 = 128、0,重複3次。c 就是 x 以二進位表示時1的個數。
- A. 正確。200 = 11001000 中1的個數為3。
- B. 這是0位元的個數。此程式是把1位元逐一清除。
- C. 這是8位元的位元數。迴圈只重複1的個數那麼多次。