基本情報技術者試験 2003年度 = 平成15年度・春期 午前 問2

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

 ア 3  イ 4  ウ 5  エ 6

解答

 ウ

解説

 10進数の11すなわち(1011)2を1ビット左にシフト(けた移動)すると、以下に示すように、値は2倍になります。

┏━┯━┯━┯━┯━┯━┯━┯━┓    ┃0│0│0│0│1│0│1│1┃  11 ┗━┷━┷━┷━┷━┷━┷━┷━┛            ↓ 1ビット左に桁移動  ┏━┯━┯━┯━┯━┯━┯━┯━┓    ┃0│0│0│1│0│1│1│0┃  22 ┗━┷━┷━┷━┷━┷━┷━┷━┛   

 2進数の値を左に1けた移動すると値が2倍になるのは、10進数の値を左に1けた移動すると値が10倍になるのとまったく同じ理由によります。
 このことから、左に2ビットシフトすると値は22倍すなわち4倍になることが分かります。これに、もとの値を加えると、5倍になります。


BohYoh.comトップページへ