応用情報技術者試験ナビ ロゴ 応用情報技術者試験ナビ
次回試験日:2025年4月20日(あと1日)

応用情報技術者試験 令和5年秋 午前問1 解説付き過去問

問題

2桁の2進数x1x2が表す整数をxとする。 2進数x2x1が表す整数を、xの式で表したものはどれか。 ここで、int(r)は非負の実数rの小数点以下を切り捨てた整数を表す。

正解

解説

この問題は、2桁の2進数のビットの並びを入れ替えた場合に、その値を元の値 x を使ってどのように表せるかを問うものです。以下の手順で詳しく解説します。

  1. 2桁の2進数の構造
    2進数 x1x2 は、上位ビット x1 と下位ビット x2 から構成されます。これが表す10進数の値 x は、次のように表されます。

    x = 2 × x1 + x2

    この式を2倍すると、次のようになります。

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



  2. int(x2) の意味
    x を 2 で割るということは、2進数で右に 1 ビットシフトする操作に相当します。

    例えば、x1x2 を右シフトすると、x1.x2 となり、小数点以下を切り捨てた値は x1 になります。

    つまり、int(x2) = x1 …②



  3. ビットを入れ替えた場合の値
    元の2進数 x1x2 のビットを入れ替えた x2x1 が表す10進数の値は、

    2 × x2 + x1 …③



  4. 式の変形と整理
    ①式の 2x = 4x1 + 2x2 から、3x1 を引くと、

    2x − 3x1 = x1 + 2x2(③式と一致)

    ②より、x1 = int(x2) なので、

    2x − 3 × int(x2) が x2x1 を表す式となります。



  5. 別解:具体的な値を代入して確認
    x1 = 1、x2 = 0 のとき:

    x = 2 × 1 + 0 = 2
    x2x1 = 01(2) = 1(10)
    int(22) = 1
    2x − 3 × int(x2) = 4 − 3 = 1(確認一致)

    x1 = 1、x2 = 1 のとき:

    x = 2 × 1 + 1 = 3
    x2x1 = 11(2) = 3(10)
    int(32) = 1
    2x − 3 × int(x2) = 6 − 3 = 3(確認一致)



したがって、2進数 x2x1 が表す整数は、x を用いて表すと 2x − 3 × int(x2) となります。