ソフトウェア開発技術者平成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)
  • [出題歴]
  • 応用情報技術者 R5秋期 問1
  • 応用情報技術者 H27春期 問2

分類

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

正解

解説

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

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

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

次に、選択肢中の int(x2) について考えます。x2は、xを右に1ビットシフト(12)させたものなので、

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

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

 int(x1.x2) = x1

つまり、int(x2) は x1 と同じ値ということになります。

 int(x2) = x1 …②

①と同様に、2進数x2x1を10進数で表すと x2*2 + x1 です。これを先程の①と比べると、両者の差分は 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-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop