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

x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。次のプログラムを実行した後の y の値はどれか。

8ビット型: x ← 13, y
y ← (x << 2) ∨ (x >> 1)
  1. A27
  2. B54
  3. C58
答えと解説を見る

正解:B. 54

13 は2進数で 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の位)があるので一致しません。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

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