プログラミングの基礎(擬似言語のトレース)
∧ はビットごとの論理積を表す。次のプログラムを実行した後の 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 を2進数で表したときの1の個数になります。
- A. 正しい。200 = 11001000 の1の個数3です。
- B. 0のビットの個数です。このプログラムは1のビットを1つずつ消しています。
- C. 8ビットのビット数です。繰返しは1の個数の分だけ行われます。