平成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 …①
また、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
とするなど簡単に計算できる値を代入して消去法で解く方法が現実的かもしれません。
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
とするなど簡単に計算できる値を代入して消去法で解く方法が現実的かもしれません。