プログラミングの基礎(擬似言語のトレース)
x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。x が 75 のとき、次の代入を実行した後の y の値はどれか。
8ビット型: x ← 75, y
y ← (x << 4) ∨ (x >> 4)
- A75
- B180
- C210
答えと解説を見る
正解:B. 180
75 は2進数で 0100 1011 です。x << 4 は下位4ビットを上位へ移して 1011 0000 = 176(あふれた 0100 は捨てられます)、x >> 4 は上位4ビットを下位へ移して 0000 0100 = 4 です。論理和は 1011 0100 = 180 で、上位4ビットと下位4ビットを入れ替えた値になります。8ビットに収めずに 75 × 16 = 1200 のまま扱うと、結果が変わります。
- A. 入れ替えても元のままと考えた値です。上位と下位の4ビットは異なるので値が変わります。
- B. 正しい。0100 1011 の上位と下位の4ビットを入れ替えた 1011 0100 = 180 です。
- C. 8ビットの並びを左右反転した 1101 0010 の値です。