午前問1
数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数xを10倍する操作はどれか。ここで、桁あふれは、起こらないものとする。
xを2ビット左にシフトした値にxを加算し、更に1ビット左にシフトする。 | |
xを2ビット左にシフトした値にxを加算し、更に2ビット左にシフトする。 | |
xを3ビット左にシフトした値と、xを2ビット左にシフトした値を加算する。 | |
xを3ビット左にシフトした値にxを加算し、更に1ビット左にシフトする。 |
『情報処理過去問.com』からiPhoneアプリがリリースされました!!
正解
- ア
解説
2進数のビット列を左にnビットシフトすると元の値の2nとなり、右にnビットシフトすると元の値の1/(2n)となります。
それぞれを計算すると、
それぞれを計算すると、
ア. | xを2ビット左にシフトした値にxを加算し、更に1ビット左にシフトする。 |
(22+1)×21=10 | |
イ. | xを2ビット左にシフトした値にxを加算し、更に2ビット左にシフトする。 |
(22+1)×22=20 | |
ウ. | xを3ビット左にシフトした値と、xを2ビット左にシフトした値を加算する。 |
(23)+22=12 | |
エ. | xを3ビット左にシフトした値にxを加算し、更に1ビット左にシフトする。 |
(23+1)×21=18 |
よって正解はアとなります。