修了試験 2016-01-24実施分 基本情報技術者試験 問1
数値を2進数で表すレジスタがある。 このレジスタに格納されている正の整数xを10倍にする操作はどれか。 ここで,桁あふれは起こらないものとする。
正答1
解説
正解は1です。 この問題は、ビットシフトと加算を組み合わせて10倍を作る方法を問うています。 2進数では、1ビット左にシフトすると値は2倍、2ビットなら4倍、3ビットなら8倍になります。 10倍は「(4x+x)×2」または「8x+2x」と分解できます。 【計算】 xを2ビット左にシフトすると4xです。 4xにxを加えると5xです。 5xを1ビット左にシフトすると5x×2=10xです。 【選択肢別解説】 1:○ 2ビット左シフトで4x、xを加えて5x、さらに1ビット左シフトで10xになります。 10倍を正しく作れる操作です。 2:× 5xを2ビット左にシフトすると、5x×4=20xになります。 10倍ではなく20倍なので誤りです。 3:× 3ビット左シフトの8xと2ビット左シフトの4xを加えると12xになります。 10倍にするには、8xに加えるのは1ビット左シフトの2xです。 4:× 3ビット左シフトの8xにxを加えると9xで、さらに1ビット左シフトすると18xになります。 10倍ではありません。 【ポイント】 nビット左シフトは2^n倍になります。 定数倍は2のべき乗の和に分解し、シフトと加算で表せることを覚えておきましょう。まとめて解く
修了試験 2016-01-24実施分を通しで解く(80問)→