ソフトウェア開発技術者平成20年春期 午前問4

問4

2けたの2進数x1x2が表す整数をxとする。2進数x2x1が表す整数を,x の式で表したものはどれか。ここで,int(r)は非負の実数r の小数点以下を切り捨てた整数を表す。
  • 2x+4int(x2)
  • 2x+5int(x2)
  • 2x−3int(x2)
  • 2x−4int(x2)
  • [出題歴]
  • 応用情報技術者 H27春期 問2

分類

テクノロジ系 » 基礎理論 » 応用数学

正解

解説

x(エックス)と×(かける)が紛らわしいので、乗算の演算子を*で記述しています。

xは10進数で x1*2+x2 なので、選択肢中の2xは10進数で以下のように示すことができます。

 2x=x1*4+x2*2 …①

また、x2は、xを右に1ビットシフト(1/2)させたものなので、

 x1x2→(右へ1ビットシフト)→x1.x2("."は小数点)

さらに int()は整数部を取り出す操作なので、

 int(x1.x2)=x1

したがって

 int(x2)=x1 …②

となります。

2進数x2x1を、10進数で表すと x2*2+x1 で、先程の 2x との差分は x1 が3つ分です。

 x1*4+x2*2 -x1*3=x2*2+x1

①、②より 2x=x1*4+x2*2、x1=int(x2) なので、上記の式中の左辺の該当部分を置き換えると、

 2x−3int(x2)=x2*2+x1


ここまでがこの設問の正しい理解ですが、実際の試験本番では x1=1,x2=1 として、

 x1x2=11(2)=3(10)
 x2x1=11(2)=3(10)
 int(x2)=1

 3=2*3−a
 a=3

で「ウ」が正解としたり、x1=1,x2=0 として、

 x1x2=10(2)=2(10)
 x2x1=01(2)=1(10)
 int(x/2)=1

 1=2*2−a
 a=3

とするなど簡単に計算できる値を代入して消去法で解く方法が現実的かもしれません。
© 2010-2023 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop