概要
IPアドレスの範囲からCIDR表記へ変換する方法をまとめました。
計算手順
ステップ 1: IP範囲を確認
- 開始IP(例: 192.168.0.0)
- 終了IP(例: 192.168.0.255)
ステップ 2: IPを32ビット整数に変換
各オクテットをバイナリに変換して結合します。
- 開始IP:192.168.0.0 → 11000000.10101000.00000000.00000000
- 終了IP:192.168.0.255 → 11000000.10101000.00000000.11111111
ステップ 3: 共通ビット数を求める
開始IPと終了IPのバイナリを比較し、先頭から一致しているビット数を数えます。
- 192.168.0.0 ~ 192.168.0.255 は最初の 24ビットが共通 → /24
ステップ 4: CIDR表記
ネットワークアドレス = 開始IPの共通部分 + 残りを0で埋める
CIDR = ネットワークアドレス / プレフィックス長
192.168.0.0/24
ステップ 1: IP範囲を確認
- 開始IP(例: 192.168.32.0)
- 終了IP(例: 192.168.39.255)
ステップ 2: IPを32ビット整数に変換
各オクテットをバイナリに変換して結合します。
- 開始IP:192.168.32.0 → 11000000.10101000.00100000.00000000
- 終了IP:192.168.39.255 → 11000000.10101000.00100111.11111111
ステップ 3: 共通ビット数を求める
開始IPと終了IPのバイナリを比較し、先頭から一致しているビット数を数えます。
最初の 21ビットが共通 → /21
ステップ 4: CIDR表記
ネットワークアドレス = 開始IPの共通部分 + 残りを0で埋める
CIDR = ネットワークアドレス / プレフィックス長
192.168.32.0/21
サブネットマスクで表すと、
192.168.0.0 ~ 192.168.0.255 は 255.255.255.0
192.168.32.0 ~ 192.168.39.255 は 255.255.248.0
になります。
サブネットマスクは、プレフィックス長分だけ「1」を並べて、残りを「0」にします。
/24 → 11111111.11111111.11111111.00000000 → 255.255.255.0
/21 → 11111111.11111111.11111000.00000000 → 255.255.248.0
log2を使用した計算式
log₂(底が2の対数)を使うと計算が非常に簡単で高速になります。理由は、IPアドレスの範囲サイズが必ず2のべき乗で表されるため、プレフィックス長を求めるときに「何ビット必要か」を直接計算できるからです。
prefix_length = 32 - log2(範囲内のIP数)
192.168.0.0~192.168.0.255の場合
範囲サイズを求める
範囲サイズ = 256
log₂を計算
log₂(256) = 8(2^8 = 256)
プレフィックス長を求める
プレフィックス長 = 32 - 8 = 24
結果
CIDR = 192.168.0.0/24
192.168.32.0 ~ 192.168.39.255の場合
範囲サイズを求める
第3オクテットが32~39 → 8個
各オクテットに256個のIP → 8 × 256 = 2048
範囲サイズ = 2048
log₂を計算
log₂(2048) = 11(2^11 = 2048)
プレフィックス長を求める
プレフィックス長 = 32 - 11 = 21
結果
CIDR = 192.168.32.0/21