(5)できるだけ少ない知識で解きたい人用「数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数xを10倍する操作はどれか」
#基本情報技術者試験 #平成29年 #秋期 #問1 #2進数 #シフト
数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数xを10倍する操作はどれか。ここで,桁あふれは,起こらないものとする。
ア xを2ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。
イ xを2ビット左にシフトした値にxを加算し,更に2ビット左にシフトする。
ウ xを3ビット左にシフトした値と,xを2ビット左にシフトした値を加算する。
エ xを3ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。
正の整数値xを、自分で勝手に決めてア~エのシフトや加算をやってみる。
xは正だから一番左は0、「桁あふれは、起こらないもの」とあるので。シフトしてもはみ出す値が出ないように、小さめの値にしておく。
00000111 <--- これをxにしてみる
ア 勝手にきめたxは00000111(10進数の7)
① 00000111を2ビット左にシフトすると、00011100
② 00011100に00000111を加算すると、
00011100
+00000111
--------------
00100011
③ 更に1ビット左にシフトすると、01000110
01000110を10進数にすると2+4+64=70なので、7の10倍になった。
イ~エは確認しなくても大丈夫。