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