問題
問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倍したことになります。
よって正解は,選択肢ウです。
アイティ・アシスト 代表取締役