修了試験 2018-07-22実施分 基本情報技術者試験 問1
非負の2進数 b_1b_2…b_n を3倍にしたものはどれか。
正答1
解説
正解は1です。 2進数では、末尾に0を1桁付け加える(左に1ビットシフトする)と値が2倍になります。 3倍は「2倍+元の数」と分解して考えます。 【選択肢別解説】 1:○ b_1b_2…b_n0 は元の数を左へ1ビットシフトした値で、元の数の2倍です。 これに元の数 b_1b_2…b_n を加えると、2倍+1倍で3倍になります。 2:× 末尾に00を付けると4倍になり、そこから1を引くと「4倍-1」です。 3倍にはなりません。 3:× 末尾に000を付けると左へ3ビットシフトしたことになり、8倍です。 4:× 末尾に1を付けると「2倍+1」になり、3倍ではありません。 【計算】 元の数をxとします。 末尾に0を付けた数は 2x です。 2x+x=3x となり、元の数の3倍です。 【ポイント】 左へkビットシフトすると2のk乗倍、右へkビットシフトすると2のk乗分の1になります。 「シフトと加算の組合せ」で定数倍を作る考え方は頻出です。まとめて解く
修了試験 2018-07-22実施分を通しで解く(80問)→