サブネットマスク/ビットマスクの換算表を印字します。 2007/11/15

Nippon Kaisho システムツール [ IP換算表:サブネットマスク ]

上記のサイトを参考にしています。

結果

0 0.0.0.0
1 128.0.0.0
2 192.0.0.0
3 224.0.0.0
4 240.0.0.0
5 248.0.0.0
6 252.0.0.0
7 254.0.0.0
8 255.0.0.0
9 255.128.0.0
10 255.192.0.0
11 255.224.0.0
12 255.240.0.0
13 255.248.0.0
14 255.252.0.0
15 255.254.0.0
16 255.255.0.0
17 255.255.128.0
18 255.255.192.0
19 255.255.224.0
20 255.255.240.0
21 255.255.248.0
22 255.255.252.0
23 255.255.254.0
24 255.255.255.0
25 255.255.255.128
26 255.255.255.192
27 255.255.255.224
28 255.255.255.240
29 255.255.255.248
30 255.255.255.252
31 255.255.255.254
32 255.255.255.255



/**
* <p>
* サブネットマスク/ビットマスクの換算表を印字します。
* </p>
*
* @author nakawaka
*
*/
public class PrintSubnet {

public static void main(String[] args) {

for (int j = 0; j <= 32; j++) {
System.out.printf("%d ", j);
printSubnet(j);
}

}

/**
* <p>
* 指定されたビットマスクで、サブネットマスクを印字します。<br>
* 0 <= mask && mask <= 32<br>
* </p>
*
* @param mask
* とりうる値の範囲は、0 <= mask && mask <= 32<br>
*/
static void printSubnet(int mask) {
if (mask == 0) {
printIPAddress(0);
return;
}
int i = (0xffffffff << (32 - mask));

printIPAddress(i);
}

/**
* <p>
* ipv4の値をint値にします。
* </p>
*
* @param b0
* @param b1
* @param b2
* @param b3
* @return
*/
static int toInt(int b0, int b1, int b2, int b3) {
int l = b0 << 24;
l += b1 << 16;
l += b2 << 8;
l += b3;
return l;
}

/**
* <p>
* int値からipv4の値を出力します。
* </p>
*
* @param i
*/
static void printIPAddress(int i) {
int b0 = (i >> 24) & 0xff;
int b1 = (i >> 16) & 0xff;
int b2 = (i >> 8) & 0xff;
int b3 = i & 0xff;
System.out.printf("%d.%d.%d.%d%n", b0, b1, b2, b3);
}
}

: