第2種情報処理技術者試験 1997年度 = 平成9年度・秋期 午前 問11

 2進数の乗算は、シフト演算(けた移動)と加算で行うことができる。2進数mを2n倍するにはmをnビット左にシフトすればよい。
 例えば、m×19は、
   (mをaビット左にシフトした値) + (mを1ビット左にシフトした値) + m
で求めることができる。aの値はどれか。

 ア 2  イ 3  ウ 4  エ 5

解答

 ウ

解説

 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倍になるのとまったく同じ理由によります。
 左に4けた移動すると24倍の値すなわちm×16が得られます。これに、左に1けた移動した21倍の値すなわちm×2と、もとのmを加えるとm×19を求めることができます。


BohYoh.comトップページへ