プログラミングの基礎(擬似言語のトレース)
x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。次のプログラムを実行した後の y の値はどれか。
8ビット型: x ← 13, y
y ← (x << 2) ∨ (x >> 1)
- A27
- B54
- 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の位)があるので一致しません。