🤔 なぜ2進数・16進数を使うのか?
学習を始める前に「なぜ必要か」を理解しておこう
理由1 コンピュータは2進数しか理解できない
コンピュータの内部は無数の電気スイッチでできています。スイッチは ON か OFF の2状態しかないため、すべての情報は 1(ON)と 0(OFF) の組み合わせで表現されます。
💡
ON = 1
⬛
OFF = 0
10110101
2進数で表現
理由2 でも2進数は人間には読みにくい
同じIPアドレスを2進数・10進数・16進数で表すと一目瞭然です。
※ IPv4は人間が読みやすい10進数で表記するのが一般的です
理由3 16進数は2進数をコンパクトにした表現
4ビット = 16進数1桁 が対応しているので、桁数が 1/4 になります。MACアドレスやIPv6では16進数が標準的に使われます。
MACアドレス(16進数)
00:1A:2B:3C:4D:5E
IPv6アドレス(16進数)
2001:0db8:85a3::8a2e:0370:7334
まとめ ネットワークエンジニアに必要な理由
🔢 2進数が必要な場面
- ・ サブネットマスクの計算
- ・ AND演算でネットワークアドレスを求める
- ・ ホスト数の計算(2のべき乗)
🔡 16進数が必要な場面
- ・ MACアドレスの読み書き
- ・ IPv6アドレスの計算
- ・ パケットキャプチャの解析
① 2進数 → 10進数
各ビットに「重み」を掛けて合計する
8ビットの場合、右から 1・2・4・8・16・32・64・128 の重みがあります。
手順
- 右から 1, 2, 4, 8, 16, 32, 64, 128 と重みを割り当てる
- ビットが 1 の位置の重みだけを足し合わせる
- 合計が10進数の答え
💡 ポイント!覚えておくと便利な値
サブネットマスクでよく登場するパターンです。丸ごと覚えておくと計算が速くなります!
② 10進数 → 2進数
2で割り続けて余りを下から読む
例: 181 を2進数に変換
手順
- 2で割って商と余りを記録する
- 商が0になるまで繰り返す
- 余りを下から上に読むと2進数になる
💡 ポイント!引き算法で素早く変換
2で割り続ける代わりに、128から順に引けるか試す方法も速いです。
例: 181 を変換
181 ≥ 128 → 1 181 - 128 = 53
53 < 64 → 0
53 ≥ 32 → 1 53 - 32 = 21
21 ≥ 16 → 1 21 - 16 = 5
5 < 8 → 0
5 ≥ 4 → 1 5 - 4 = 1
1 < 2 → 0
1 ≥ 1 → 1 → 10110101
128以上なら最上位ビットは 1、128未満なら 0 と即判断できます!
③ 2進数 ↔ 16進数
4ビットずつ区切って1桁の16進数に対応させる
16進数は 0〜9 と A〜F の16種類で数を表します。
ポイントは 4ビット = 16進数1桁 が1対1で対応していることです。
| 2進数 | 10進数 | 16進数 |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | 8 |
| 1001 | 9 | 9 |
| 1010 | 10 | A |
| 1011 | 11 | B |
| 1100 | 12 | C |
| 1101 | 13 | D |
| 1110 | 14 | E |
| 1111 | 15 | F |
例: 10110101 を16進数に変換
① 4ビットずつ区切る
② それぞれ10進数に変換(重みを計算)
③ 対応表で16進数1桁に変換して並べる
手順(2進数 → 16進数)
- 8ビットを4ビットずつ2つに区切る
- それぞれの4ビットを10進数に変換する
- 対応表で16進数1桁に変換して2桁を並べる
💡 ポイント!A〜Fの4ビットを丸暗記
0〜9は直感でわかるので、A〜Fの6パターンだけ覚えれば完璧です!
④ 16進数 → 10進数
16の重みを掛けて合計する
例: B5 を10進数に変換
B = 11
11 × 16 = 176
5 = 5
5 × 1 = 5
176 + 5 =
181
手順
- A〜FはそれぞれA=10, B=11, C=12, D=13, E=14, F=15 に変換
- 右から 16⁰=1, 16¹=16, 16²=256 … の重みを掛ける
- 合計が10進数の答え
💡 ポイント!頻出値を覚えておこう
ネットワークでよく登場する16進数です。暗算の近道になります!
💬 暗算コツ: 上位桁 × 16 + 下位桁 例) B5 = 11×16 + 5 = 181
⑤ 10進数 → 16進数
16で割り続けて余りを下から読む
例: 181 を16進数に変換
手順
- 16で割って商と余りを記録する
- 商が0になるまで繰り返す
- 余りを下から上に読む(10以上はA〜Fに変換)
💡 ポイント!頻出値を覚えておこう
サブネットマスクでよく登場する10進数→16進数の変換です!
💬 16〜255の変換: ÷16の商が上位桁、余りが下位桁 例) 181 ÷ 16 = 11余り5 → B5