基本情報頻出「次の流れ図は10進整数」基数変換の解法を徹底解説

目次
基本情報頻出「次の流れ図は10進整数」基数変換の解法を徹底解説
基本情報頻出「次の流れ図は10進整数」基数変換の解法を徹底解説
@ creator • Click to Play Video Inline
🎵 基本情報頻出「次の流れ図は10進整数」基数変換の解法を徹底解説

基本情報技術者試験やITパスポートの学習を進める中で、多くの受験生が最初に直面する壁が「次の流れ図は、10進整数を2進数に変換する処理を表している」といったアルゴリズム問題です。記号が入り組んだフローチャートを目にした瞬間、思考が停止してしまう方も少なくありません。

しかし、この手の基数変換アルゴリズムは、出題パターンとトレースの手順さえ確立してしまえば、確実に得点源へ変えられるボーナス問題に化けます。本稿では、変換ロジックの根底にある仕組みから、試験本番で迷わないトレース表の作り方、合否を分ける落とし穴の回避策まで余すところなく解説します。

📌 【この記事の重要ポイントまとめ】
  • 要点1:基数変換アルゴリズムの根幹は「基数で割った余りを求め、商を更新し続ける」単純なループ処理にある。
  • 要点2:計算で得られる余りは「下位桁(右側)」から順に出現するため、配列やスタック構造による出力順の制御が最大のトラップとなる。
  • 要点3:2026年現在の科目B(擬似言語)対策においても、フローチャートを具体値でトレースする基礎力は得点力に直結する。

【試験頻出】「次の流れ図は10進整数…」問題の正体と基数変換の仕組み

試験で定番となっている「次の流れ図は10進整数を〜」という問題の正体は、私たちが日常的に使っている10進数を、コンピュータが処理できる2進数(あるいは8進数・16進数)へ置き換える基数変換の仕組みを問うものです。

紙とペンで10進数を2進数に変換する場合、対象の数値を「2」で割り続け、余りを下から上に並べる手法(すだれ算)を用います。アルゴリズム問題の流れ図は、この手作業のプロセスをそのままプログラミングの処理手順として落とし込んだものに過ぎません。

コンピュータは人間のように「全体を眺めて下から並べる」という直感的な処理ができません。そのため、「剰余算と商の求め方」を1ステップずつ愚直に繰り返すように命令を組み立てます。この一連のルールを視覚化したものが、問題文に登場するフローチャートです。

【実践トレース】具体値で完全理解!商と剰余算を追うステップバイステップ解法

フローチャート問題で最も確実なアルゴリズム解法は、小さな具体値を代入して実際に動かしてみるフローチャートトレースです。頭の中だけで処理を追おうとすると、変数が増えた段階で処理の破綻を招きます。

例として、10進整数の「13」を2進数「1101」へ変換する典型的な処理の流れを追ってみましょう。

まず、対象の数値($N=13$)を用意し、ループ処理を開始します。

ステップ1: $13 \div 2 = 6$ あまり 1(余りを記録、商「6」を次の$N$とする)
ステップ2: $6 \div 2 = 3$ あまり 0(余りを記録、商「3」を次の$N$とする)
ステップ3: $3 \div 2 = 1$ あまり 1(余りを記録、商「1」を次の$N$とする)
ステップ4: $1 \div 2 = 0$ あまり 1(余りを記録、商「0」を次の$N$とする)

ここで着目すべきはループ処理と終了条件です。商($N$)が「0」になった時点で除算を停止する条件分岐($N = 0$ または $N > 0$ でない場合)が配置されているかを確認します。余りとして得られた数値は「1、0、1、1」ですが、これをそのまま出力すると誤りになります。正しい2進表記は、最後に出た余りを最上位桁とした「1101」です。

【落とし穴に注意】桁順の逆転を防ぐ「配列とスタック構造」の役割

過去問で多くの受験者が失点する最大のポイントが、「余りを取り出す順番」と「2進数として表記する桁の順番」の不一致です。計算で最初に出てくる余りは、2進数の最下位桁($2^0$の位)に位置します。

この順序のズレを解決するために、問題の流れ図には配列とスタック構造が組み込まれるケースが頻出します。

スタック構造を用いた場合、計算された余りは「後入れ先出し(LIFO: Last In First Out)」で格納されます。計算順にプッシュ(格納)していき、ループ終了後にポップ(取り出し)して出力すれば、自然と逆順になり正しい2進数が完成します。配列を使用する場合は、インデックスを「配列[0]、配列[1]…」と進めて格納した後に、インデックスを減算しながら逆順に取り出す処理がフローチャート内に存在するかどうかが、正答を絞り込む決定的な手掛かりです。

【解法のバリエーション】シフト演算処理を用いた別アプローチ

10進数2進数変換の問題には、除算記号($\div$ や mod)を使わずに、ビット単位のシフト演算処理で実現するパターンも存在します。応用問題として出題されやすい形式です。

具体的には、対象数値を保持した変数に対して「論理右シフト」を1ビットずつ行い、あわせて「最下位ビットとの論理積(AND演算)」を取ることで、1ビットずつ余りを抽出していきます。

「2で割る処理」は「右に1ビットシフトする処理」と等価であり、「2で割った余りを求める処理」は「1との論理積($N \text{ AND } 1$)を求める処理」と同一です。フローチャート内に除算記号が見当たらない場合は、このビット演算パターンが使われていると即座に見抜く洞察力が求められます。

【2026年最新対策】科目B擬似言語問題への応用と過去問解説詳細

現在の基本情報技術者試験では、従来のフローチャート単体問題から、擬似言語を用いた「科目B試験」が主戦場となっています。しかし、問われているアルゴリズムの本質は一切変わっていません。

出題形式がプログラミングコード風の擬似言語に変わっても、過去問解説詳細を分析すると、ベースとなっているロジックは往年のフローチャート問題そのものです。初学者向けであるITパスポート問題の基礎知識(基数変換の手計算)を前提としつつ、それをプログラムコードとして実装できるかを測っています。

効果的な擬似言語対策は、コードを日本語に翻訳しながら読むのではなく、余白に小さなトレース表を書き出し、変数の値がループごとにどう変化していくかを物理的に追跡することです。頭の中のワーキングメモリに頼らない姿勢が、ケアレスミスを根絶する最大の防壁になります。

【次の流れ図は10進整数】に関するよくある質問(FAQ)

Q1:トレース表を作るとき、代入する数値は何を選ぶべきですか?
A1:大きすぎる数値を代入すると計算に時間がかかり、小さすぎるとループの挙動が確認できません。2進数変換の場合、「5(2進数で101)」や「6(2進数で110)」、「13(2進数で1101)」あたりを選ぶと、3〜4回のループで検証が完了するため最適です。

Q2:フローチャートのループ条件で「以上」と「より大きい」の区別で迷います。
A2:境界値(バウンダリ値)の挙動を確認してください。基数変換では商が「0」になったタイミングでループを抜ける必要があります。判定が「$N > 0$」であれば$N=0$で終了しますが、「$N \ge 0$」だと商が0のときも再度ループしてしまい無限ループに陥ります。0のときの挙動をトレースするのが確実です。

Q3:ITパスポートと基本情報技術者試験で基数変換の出題に違いはありますか?
A3:ITパスポートでは「計算結果そのもの(10進数の13は2進数でいくつか)」を問う知識・計算問題が中心ですが、基本情報技術者試験では「計算を実行するプロセスの正しさ(どの変数に何を代入するか)」を問う論理的思考力が求められます。

まとめ:アルゴリズムの思考力を磨き科目B合格を確実に掴む

「次の流れ図は10進整数…」から始まる基数変換問題は、アルゴリズムの基礎である「順次・分岐・反復」のすべてが凝縮された試金石です。

一見すると難解に見えるフローチャートも、商と剰余の計算ステップ、スタックによる桁順の制御、ループの終了条件という3つの構成要素に分解すれば、迷うことなく正解に辿り着けます。問題文に気後れすることなく、余白に小さな数値を書き込んで確実にトレースする習慣を身につけ、試験突破の足がかりにしてください。 (出典: 次 の 流れ図 は 10 進 整数(Yahoo!ニュース))

次 の 流れ図 は 10 進 整数
次 の 流れ図 は 10 進 整数
次 の 流れ図 は 10 進 整数