IPアドレス2進数変換ツールとは?
192.168.1.1のようなIPv4アドレスは、実際には32ビットの数値にすぎません。人間が扱いやすいように、4つの10進数(オクテット)をドットで区切って表記しているだけです。このツールは、その4つのオクテットを「2進数表記」「1つの32ビット10進整数」「16進数」へと変換します。これらは、ネットワークエンジニア・プログラマー・学習者が日常的に行き来する3つの表現形式です。
使い方
4つのオクテットを、それぞれ0〜255の整数で入力してください。計算ボタンを押すと、ドット区切りの2進数表記(オクテットごとに8ビット)、連続した32ビットの2進数文字列、対応する10進整数、そしてドット区切りの16進数が瞬時に表示されます。
計算式の解説
各オクテットは2進数に変換され、先頭をゼロで埋めてちょうど8ビットに揃えられます。つまり1は00000001、255は11111111となります。これら4つを連結すると32ビットの値になります。10進整数は、各オクテットを位置に応じて重み付けして求めます。$$\text{Decimal} = \text{Octet 1} \cdot 2^{24} + \text{Octet 2} \cdot 2^{16} + \text{Octet 3} \cdot 2^{8} + \text{Octet 4}$$ という計算です。各オクテットは8ビットなので、24ビット・16ビット・8ビット左にシフトすることで、32ビットの語の正しい位置に配置されます。
計算例
192.168.1.1を例に見てみましょう。2進数では、192 = 11000000、168 = 10101000、1 = 00000001、1 = 00000001 となり、11000000.10101000.00000001.00000001 が得られます。10進整数は $$192 \times 16{,}777{,}216 + 168 \times 65{,}536 + 1 \times 256 + 1 = 3{,}221{,}225{,}472 + 11{,}010{,}048 + 256 + 1 = \mathbf{3{,}232{,}235{,}777}$$ です。16進数では C0.A8.01.01 となります。
よくある質問
なぜ各オクテットは0〜255でなければならないの? 各オクテットは8ビットで構成されており、8ビットで表現できる値は0から255まで(\(2^8 = 256\)通り)だからです。
10進整数は何に使うの? データベース、位置情報テーブル、ルーティングのコードなどでは、IPを1つの整数として保存することがよくあります。ドット区切りの文字列を解析するより、比較や範囲チェックを高速に行えるためです。
IPv6でも使えますか? いいえ。IPv6アドレスは128ビットで、16進数のグループで表記されます。このツールはIPv4(32ビット)アドレス専用です。