問題

問1 数値を2進数で格納するレジスタがある。このレジスタに正の整数xを設定した後,“レジスタの値を2ビット左にシフトして,xを加える”操作を行うと,レジスタの値はxの何倍になるか。ここで,あふれ(オーバフロー)は,発生しないものとする。

ア 3
イ 4
ウ 5
エ 6

テクノロジ系>基礎理論>基礎理論>離散数学

解説と解答

 シフト演算に関する問題です。シフト演算とは,シフト(桁ずらし)を行うことで演算を行うものです。

 例えば,10進数の数値123を左に1桁シフトすると,1230となり10倍になります。同様に,2進数の数値110(=6)を左に1ビット分シフトすると,1100(=12)となり,2倍になります。

 つまり,2進数をnビット左にシフトすると,もとの数の「2のn乗」倍になります。2ビットシフトして,「2の2乗」倍(=4倍)したものに元の値を足すと,結果として5倍したことになります。

 よって正解は,選択肢ウです。

佐塚 彰夫(さづか あきお)
アイティ・アシスト 代表取締役
ITに関するコンサルティングや教育を実施するアイティ・アシストの代表。新人研修やプロジェクトマネージャ育成研修をはじめ,基本情報技術者試験,応用情報技術者試験,プロジェクトマネージャ試験などの試験対策研修の実績も豊富。著書に「短期完全マスター 基本情報技術者 2009年版」などがある。