数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数 x を10倍にする操作はどれか。ここで、桁あふれは起こらないものとする。
ア x を2ビット左にシフトした値にxを加算し、更に1ビット左にシフトする。
イ x を2ビット左にシフトした値にxを加算し、更に2ビット左にシフトする。
ウ x を3ビット左にシフトした値と、xを2ビット左にシフトした値を加算する。
エ x を3ビット左にシフトした値にxを加算し、更に1ビット左にシフトする。
ア
2進数を元の値から nビット左にシフトすると、2n倍になり、nビット右にシフトすると、 (1/2)n倍になる。
ア 正しい。(x × 22 + x) × 2 = 5x × 2 = 10x で、10倍になる
イ (x × 22 + x) × 22 = 5x × 4 = 20x で、20倍になる。
ウ x × 23 + x × 22 = 8x × 4x = 12x で、12倍になる。
エ (x × 23 + x) × 2 = 9x × 2 = 18x で、18倍になる。
目次 | 問2 |