プログラミングの基礎(擬似言語のトレース)

⊕ はビットごとの排他的論理和を表す。次のプログラムを実行した後の x と y の値の組はどれか。

整数型: x ← 12, y ← 10
x ← x ⊕ y
y ← x ⊕ y
x ← x ⊕ y
  1. Ax = 10, y = 12
  2. Bx = 6, y = 12
  3. 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. 元の値のままと考えた場合です。実際には入れ替わります。
この分野を解く 分野ページへ

関連する計算ツール

プログラミングの基礎(擬似言語のトレース)の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

プログラミングの基礎(擬似言語のトレース)のほかの問題

  1. x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。次のプログラムを実行した後の y の値はどれか。
  2. ∧ はビットごとの論理積を表す。次のプログラムを実行した後の c の値はどれか。
  3. x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。x が 75 のとき、次の代入を実行した後の y の値はどれか。
  4. 次の手続 bubble は、整数型の配列 data を昇順に並べ替えるバブルソートである。swap(data, j, k) は data[j] と data[k] の値を入れ替える手続で、配列の要素番号は1から始まる。プログラム中の【a】に入れる字句はどれか。
  5. ÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次のプログラムは、昇順に整列された整数型の配列 data(要素番号は1から始まる)で、x 以上の値が最初に現れる要素番号を lo に求める。x は data の最後の要素以下とする。プログラム中の【a】に入れる字句はどれか。