NET
Network Study
進数変換・IPアドレス学習アプリ
← モード選択に戻る

変換の解説

2進数・10進数・16進数の変換方法をわかりやすく解説します

🤔 なぜ2進数・16進数を使うのか?

学習を始める前に「なぜ必要か」を理解しておこう

理由1 コンピュータは2進数しか理解できない

コンピュータの内部は無数の電気スイッチでできています。スイッチは ON か OFF の2状態しかないため、すべての情報は 1(ON)と 0(OFF) の組み合わせで表現されます。

💡

ON = 1

or

OFF = 0

10110101

2進数で表現


理由2 でも2進数は人間には読みにくい

同じIPアドレスを2進数・10進数・16進数で表すと一目瞭然です。

2進数 11000000.10101000.00000001.00000001 😵
10進数 192.168.1.1 😊
16進数 C0.A8.01.01 🤔

※ 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 の重みがあります。

128 64 32 16 8 4 2 1 1 0 1 1 0 1 0 1 128 32 16 4 1 128 + 32 + 16 + 4 + 1 = 181

手順

  1. 右から 1, 2, 4, 8, 16, 32, 64, 128 と重みを割り当てる
  2. ビットが 1 の位置の重みだけを足し合わせる
  3. 合計が10進数の答え

💡 ポイント!覚えておくと便利な値

サブネットマスクでよく登場するパターンです。丸ごと覚えておくと計算が速くなります!

10000000 = 128
11000000 = 192
11100000 = 224
11110000 = 240
11111000 = 248
11111100 = 252
11111110 = 254
11111111 = 255

② 10進数 → 2進数

2で割り続けて余りを下から読む

例: 181 を2進数に変換

181 ÷ 2 = 90 余り 1 ← 最下位ビット(LSB) 90 ÷ 2 = 45 余り 0 45 ÷ 2 = 22 余り 1 22 ÷ 2 = 11 余り 0 11 ÷ 2 = 5 余り 1 5 ÷ 2 = 2 余り 1 2 ÷ 2 = 1 余り 0 下から読む 商が1になったら 最後に1を追加 → 10110101

手順

  1. 2で割って商と余りを記録する
  2. 商が0になるまで繰り返す
  3. 余りを下から上に読むと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進数
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
101010A
101111B
110012C
110113D
111014E
111115F

例: 10110101 を16進数に変換

① 4ビットずつ区切る

1 0 1 1
0 1 0 1

② それぞれ10進数に変換(重みを計算)

8+0+2+1 = 11
0+4+0+1 = 5

③ 対応表で16進数1桁に変換して並べる

11 → B
5 → 5
B5

手順(2進数 → 16進数)

  1. 8ビットを4ビットずつ2つに区切る
  2. それぞれの4ビットを10進数に変換する
  3. 対応表で16進数1桁に変換して2桁を並べる

💡 ポイント!A〜Fの4ビットを丸暗記

0〜9は直感でわかるので、A〜Fの6パターンだけ覚えれば完璧です!

1010 = A(10)
1011 = B(11)
1100 = C(12)
1101 = D(13)
1110 = E(14)
1111 = F(15)

④ 16進数 → 10進数

16の重みを掛けて合計する

例: B5 を10進数に変換

B

B = 11

11 × 16 = 176

+
5

5 = 5

5 × 1 = 5

176 + 5 =

181

手順

  1. A〜FはそれぞれA=10, B=11, C=12, D=13, E=14, F=15 に変換
  2. 右から 16⁰=1, 16¹=16, 16²=256 … の重みを掛ける
  3. 合計が10進数の答え

💡 ポイント!頻出値を覚えておこう

ネットワークでよく登場する16進数です。暗算の近道になります!

80 = 128
C0 = 192
E0 = 224
F0 = 240
F8 = 248
FC = 252
FE = 254
FF = 255

💬 暗算コツ: 上位桁 × 16 + 下位桁 例) B5 = 11×16 + 5 = 181

⑤ 10進数 → 16進数

16で割り続けて余りを下から読む

例: 181 を16進数に変換

181 ÷ 16 =
11
余り
5
← 下位桁
11 ÷ 16 =
0
余り
B
← 上位桁(11=B)
↑ 下から読む
→ B5

手順

  1. 16で割って商と余りを記録する
  2. 商が0になるまで繰り返す
  3. 余りを下から上に読む(10以上はA〜Fに変換)

💡 ポイント!頻出値を覚えておこう

サブネットマスクでよく登場する10進数→16進数の変換です!

128 = 80
192 = C0
224 = E0
240 = F0
248 = F8
252 = FC
254 = FE
255 = FF

💬 16〜255の変換: ÷16の商が上位桁、余りが下位桁 例) 181 ÷ 16 = 11余り5 → B5