プログラミングの基礎(擬似言語のトレース)
⊕ はビットごとの排他的論理和を表す。次のプログラムを実行した後の x と y の値の組はどれか。
整数型: x ← 12, y ← 10
x ← x ⊕ y
y ← x ⊕ y
x ← x ⊕ y
- Ax = 10, y = 12
- Bx = 6, y = 12
- Cx = 12, y = 10
答えと解説を見る
正解:A. x = 10, y = 12
2進数で12 = 1100、10 = 1010 です。1行目で x = 1100 ⊕ 1010 = 0110 = 6、2行目で y = 0110 ⊕ 1010 = 1100 = 12、3行目で x = 0110 ⊕ 1100 = 1010 = 10 になります。同じ値と2回排他的論理和をとると元に戻る(a ⊕ b ⊕ b = a)ことを使って、作業用の変数なしで値を入れ替える方法です。
- A. 正しい。排他的論理和を3回使うと、x と y が入れ替わります。
- B. 2つ目の代入までを実行した時点の値です。
- C. 元の値のままと考えた場合です。実際には入れ替わります。