平成27年春期試験問題 午前問2
問2解説へ
2けたの2進数x1x2が表す整数をxとする。2進数x2x1が表す整数を,xの式で表したものはどれか。ここで,int(r)は非負の実数r の小数点以下を切り捨てた整数を表す。
- 2x+4int(x2)
- 2x+5int(x2)
- 2x-3int(x2)
- 2x-4int(x2)
広告
解説
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
とするなど、簡単に計算できる値を代入して消去法で解く方法が無難でしょう。
整数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
とするなど、簡単に計算できる値を代入して消去法で解く方法が無難でしょう。
広告