Skip to the content.

最終更新日:2026年8月25日

まず結論

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試験の疑似コードでは、divmod がよく使われます。

演算 意味
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では、divmod 自体を知っているだけではなく、代入によって変数の値がいつ変わるかを追うことが重要です。

例えば、次の二つは同じ演算を使っていますが、結果は異なります。

正しい順序

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進小数を整理でも確認できます。

© 2024-2026 stemtazoo. All rights reserved.