令和元年度 秋期1テクノロジ系

基本情報 令和元年度 秋期 問1:テクノロジ系に関する問題

次の流れ図は, 10 進整数 7 (0 く7ぐ100) を 8 桁の 2 進数に変換する処理を表し ている。 2 進数は下位桁から順に, 配列の要素 NISHIN (1) から NISHIN (8) に格納さ れる。 流れ図の a 及びb に入れる処理はどれか。

  • a、 次険 。 ) 変数名: 初期値,増分終値 ( ーー つっ を示す。 4 b 7 と7div2 NISHIN%@) と 7mod2 7 と7mod2 NISHIN%⑯) と 7 div 2
  • bNISHIN%⑯) ぐ 7 div 2 7 と7mod2
  • cHIS|ヽ|
  • dNISHIN@) と7mod2 |7と7div2正答
正答:DNISHIN@) と7mod2 |7と7div2

AI解説(初心者・標準・上級)

理解度に合わせて3レベルの解説を無料で読めます。

初心者向けまずはここから。やさしく要点を解説

答えは d です。

10進数を2進数に変換するときの定番テクニック:

  • 2で割った余りを下から並べる
  • 7÷2=3余り1、3÷2=1余り1、1÷2=0余り1...

流れ図では:

  • aの位置:余りを配列に格納 → `NISHIN(i) ← 7 mod 2`
  • bの位置:次に商で更新 → `7 ← 7 div 2`

👉 覚え方:10進→2進=割り算の余りを下から並べる

ほかの選択肢:a/b/cはmodとdivの順番が逆など、計算手順が崩れる。

標準試験対策の基準レベル

なぜこれが正解か

正解は d。10進整数を2進数に変換する標準アルゴリズムは2で割った余りを下位から並べる手順:

```

while (7 > 0) {

NISHIN[i] ← 7 mod 2 // 余り(0または1)を下位ビットから格納

7 ← 7 div 2 // 商で更新

i ← i + 1

}

```

つまり「a:余りを配列に格納、b:商で更新」の順序が正しい。

各選択肢の解説(一般論)

  • modとdivの順序が逆だと、商を計算してから余りを取ると元の値が失われ、誤った値が格納される。
  • divを先に計算するなら一時変数に格納する必要がある。

覚え方・ひっかけ注意

基数変換の手順を整理:

  • 10→2進:2で割った余りを下位から並べる
  • 10→16進:16で割った余りを下位から並べる
  • 10→8進:8で割った余りを下位から並べる

アルゴリズム実装時は「余り取得→商で更新」の順序を保つことが鉄則。

上級誤答論破・背景理論まで深掘り

理論的背景

基数変換は除算法(Division Method)と乗算法(Multiplication Method)の2方式:

  • 除算法(整数部):基数で割った余りを下位から並べる
  • 乗算法(小数部):基数を掛けた整数部を上位から並べる

本問は整数部の除算法。一般化すると、整数 N を基数 b の n 桁で表現する場合:

```

for (i = 0; i < n; i++) {

digit[i] = N mod b

N = N div b

}

```

実装上の注意点

  • 桁数制限:本問は8桁固定。上位桁がオーバーフローする値(256以上)は表現できない
  • 負数表現:符号付き整数の2進表現は2の補数表現が標準。負数は「全ビット反転+1」で求める
  • 符号付き8bit範囲:-128〜+127
  • 浮動小数点:IEEE 754で符号・指数・仮数に分割

関連アルゴリズム

  • ホーナー法(Horner's method):多項式評価の効率化。基数変換にも応用可
  • シフト演算:2の冪で割る場合は右シフト(`N >> 1`)が高速。modはAND演算(`N & 1`)
  • モジュラー演算:`(a + b) mod m = ((a mod m) + (b mod m)) mod m`、暗号で重要

実務での使われ方

  • C/C++/Java:`itoa()`、`Integer.toBinaryString()`等で実装済み
  • 競技プログラミング:基数変換問題、桁DP
  • 暗号アルゴリズム:モジュラー指数演算、RSA等
  • エンコード/デコード:Base64、Base58(Bitcoin)、Base32
  • ハッシュ/チェックサム:CRC、Adler-32

試験での位置づけ

基本情報の基礎理論・プログラミング分野で頻出。応用情報・科目B(プログラミング)では再帰的実装、ループの停止条件、配列インデックス管理が問われる。

選択肢の発展補足

ビット演算による高速化:

  • `N mod 2` ≡ `N & 1`(最下位ビット)
  • `N div 2` ≡ `N >> 1`(右シフト)
  • 16進への変換は `N & 0xF` と `N >> 4` で4bitずつ取り出す

組込み系やパフォーマンスクリティカルな場面では除算より高速なため、これらの等価変換は実装の常套手段。基数変換のアルゴリズム理解は、エンディアン(バイトオーダー)・浮動小数点表現・誤差伝播・桁あふれ検出にもつながる基礎中の基礎。

出典・引用について

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 令和元年度 秋期1/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

テクノロジ系の他の過去問

1
テクノロジ系
2
テクノロジ系
3
テクノロジ系
4
テクノロジ系
5
テクノロジ系

あなたの弱点を診断して、合格までの最短ルートを

この分野を連続演習し、AIがあなたの弱点を分析。合格ナビなら基本情報の過去問を解きながら学べます。