最終更新日:2026年8月25日
fe fe-technology basic-theory binary algorithm
まず結論
10進整数を2進数へ変換するときは、2で割った余りを下位ビットから記録し、商を次に処理する値へ更新すると考えます。
FE試験では、次の対応を最初に思い出すと選択肢を切りやすくなります。
j mod 2 → 余り → 2進数の1桁として保存
j div 2 → 商 → 次の j にする
つまり、modはビットを取り出す、divは次へ進むです。
直感的な説明
10進数を2進数へ変換する方法の一つは、数を2で割り続ける方法です。
例えば、10進数の50を2で割っていきます。
50 ÷ 2 = 25 余り 0
25 ÷ 2 = 12 余り 1
12 ÷ 2 = 6 余り 0
6 ÷ 2 = 3 余り 0
3 ÷ 2 = 1 余り 1
1 ÷ 2 = 0 余り 1
余りは、最初に得られたものが最下位ビットです。
下位 → 上位
0 1 0 0 1 1
通常の2進数として読むときは逆から並べるので、
110010₂
となります。
8ビットで表せば 00110010₂ です。
定義・仕組み
div と mod の意味
FE試験の疑似コードでは、div と mod がよく使われます。
| 演算 | 意味 | 例 |
|---|---|---|
j div 2 |
jを2で割った商の整数部分 | 50 div 2 = 25 |
j mod 2 |
jを2で割った余り | 50 mod 2 = 0 |
2進数への変換では、この二つの役割がはっきり分かれます。
余り → 現在のビット
商 → 次に処理する値
配列へ下位ビットから格納する例
配列 B(1) から B(8) へ、下位ビットから順に格納するとします。
j = 50
k = 1 から 8 まで繰り返す
B(k) ← j mod 2
j ← j div 2
実際に追うと、次のようになります。
| k | 処理前のj | j mod 2 → B(k) |
j div 2 → 次のj |
|---|---|---|---|
| 1 | 50 | 0 | 25 |
| 2 | 25 | 1 | 12 |
| 3 | 12 | 0 | 6 |
| 4 | 6 | 0 | 3 |
| 5 | 3 | 1 | 1 |
| 6 | 1 | 1 | 0 |
| 7 | 0 | 0 | 0 |
| 8 | 0 | 0 | 0 |
したがって、配列には下位から
B(1) ... B(8)
0 1 0 0 1 1 0 0
と格納されます。
上位ビットから読むと 00110010₂ です。
このテーマは、基本情報技術者試験の基礎理論と、疑似コードのトレースを読む力の両方に関係します。公式の出題範囲は IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、基数変換や整数演算として問われます。
まず、次の対応を確認します。
| 問われ方 | 判断 |
|---|---|
| 2で割った余りを求める | mod 2 |
| 2で割った商を求める | div 2 |
| 最下位ビットを求める | mod 2 |
| 次に処理する値へ進める | div 2 |
特に、整数が偶数なら mod 2 = 0、奇数なら mod 2 = 1 です。
偶数 mod 2 = 0
奇数 mod 2 = 1
このため、mod 2 は最下位ビットを取り出す操作と考えることができます。
科目Bでどう使う?
科目Bでは、div と mod 自体を知っているだけではなく、代入によって変数の値がいつ変わるかを追うことが重要です。
例えば、次の二つは同じ演算を使っていますが、結果は異なります。
正しい順序
B(k) ← j mod 2
j ← j div 2
j = 50 なら、まず 50 mod 2 = 0 を保存し、その後 j = 25 に更新します。
間違えやすい順序
j ← j div 2
B(k) ← j mod 2
この場合、最初の処理で j が25へ変わります。
そのため保存されるのは、
25 mod 2 = 1
となり、50の最下位ビット 0 を失ってしまいます。
科目Bで疑似コードを読むときは、式だけでなく処理順序と代入後の値を1行ずつ追います。
よくある誤解・混同
div と mod を逆にする
mod → 余り
div → 商
2進数への変換では、余りが0または1なので、保存するビットには mod 2 を使います。
商を配列へ保存する
50 div 2 = 25 のように、商は0や1とは限りません。
2進数の各桁へ保存するのは j mod 2 の結果です。
余りを上位ビットだと思う
2で割る方法では、最初に得られる余りが最下位ビットです。
最初の余り → 2^0 の桁
次の余り → 2^1 の桁
配列へ下位から保存する問題なら、そのまま B(1), B(2), ... と入れられます。文字列として通常の2進数を作るなら、最後に余りを逆順に読みます。
2で割る前に j を更新してしまう
疑似コードでは、上から順に処理されます。
j ← j div 2
を先に実行すると、元の j は失われます。選択肢を見るときは、余りを保存する前にjが変更されていないかを確認します。
まとめ(試験直前用)
j mod 2は、現在の最下位ビットを取り出すj div 2は、商を求めて次の処理へ進む- 10進数→2進数は「余りを保存 → 商で更新」を繰り返す
- 2で割る方法では、余りは下位ビットから得られる
- 疑似コードでは、同じ演算でも処理順序と代入のタイミングを必ず確認する
関連する2進数の表現方法は、2進数の表現とは?2の補数と2進小数を整理でも確認できます。