戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2022年 秋期 午前201


問題文

を正の整数とし、とする。を2進数で表現するとnビットであるとき、を2進数で表現すると最大で何ビットになるか。

選択肢

(正解)

🔒 解説は解答すると表示されます

二乗の2進ビット長【午前2解説】

正解の理由

a が n ビットで表されるとは を意味します。この範囲から は常に であるため、2進表現の桁数は最大で ビットになります。逆に、例えば と取ると のとき)となり、この場合は確かに 以上であるため、2進表現の桁数は ビットを必要とします。以上により正答は )です。ただし のときは特例で のみ、 となり必要ビット数は1ビットになります。

解法ステップ

  1. a の範囲を確認する:
  2. 上界を取る: 。したがって より桁数は最大
  3. 下界(到達例)を示す: とすると これが 以上であることを示せば、2進での桁数が実際に に達する例が存在する。
  4. n=1 の特例確認: n=1 のとき のみで (1ビット)となる。

選択肢別の誤答解説

  • ア:
    誤り。平方を取ると桁数は一般に増え、最大で2倍近くになるため では不足する場合がある(例: に対し のとき は6ビット)。
  • :
    正解。上界と到達例(下界)を両方示せるため最大桁数が であると結論できる。
  • ウ:
    次元が合っていない。 は桁数として急速に増えすぎる。例えば なら だが実際の最大桁数は6。
  • エ:
    桁数が指数関数的に増えるとするもので現実の挙動と合わない。 は非常に大きく過大評価である。

よくある誤解

  • 上界を示すだけで解答したつもりになる:上界()だけでは「最大が ビットである」と断定できない。到達例(ある a で実際に ビットが必要になること)を示して初めて最大値であると示せる。
  • n=1 を見落とす:一般証明は n≥2 を前提に到達例を示すことが多いので、n=1 の特例(a=1)を確認しないと混乱する。
  • ビット数の定義混同:数 x の2進ビット数は )であることを忘れ、端点(ちょうど 2^k のとき)での扱いを誤る。

補足コラム

  • ビット数の記述を数学的にまとめると、 のビット長 なら であり 。一方 となる例があるとき なので最大値は 2n。
  • 具体例(小さい n):
    • n=1: a=1 → b=1 (1 ビット)
    • n=2: a=3 → b=9 (1001₂, 4 ビット = 2n)
    • n=3: a=7 → b=49 (110001₂, 6 ビット = 2n)
  • 簡単な検算用 Python スニペット:
def max_bits(n):
    max_b = (2**n - 1)**2
    return max_b.bit_length()

for n in range(1,6):
    print(n, max_bits(n))

FAQ

Q: 「なぜ上界だけでなく到達例が必要なのですか?」
A: 上界は「それ以上にはならない」ことを示すのみ。最大値を断定するには「ある値でその上界に等しい(またはその桁数に達する)」ことを示す下界の例が必要です。
Q: 「もし a が 0 を許すとどう変わりますか?」
A: 問題は正の整数とあるため無関係ですが、a=0 を許すと b=0 でビット数の定義が特殊(通常は0は0ビットまたは1ビット扱いの議論が必要)になります。
Q: 「負の数や符号付き表現は?」
A: 本問は正の整数の標準的な2進表現の桁数を問うているため、符号付き表現(2の補数など)は考慮しません。

関連キーワード: ビット長、二乗、桁数、不等式、最大値、下界の示し方、到達例
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について