Dado o ip 200.100.10.0 com o numero de hosts (válidos) 254 achar a mascara(não padrão) .
255.255.255.0
caso fosse 7 endereços válidos, a mascara seria: 255.255.255.240
Dado o ip 200.100.10.0 com o numero de hosts (válidos) 254 achar a mascara(não padrão) .
255.255.255.0
caso fosse 7 endereços válidos, a mascara seria: 255.255.255.240
o0
legal.
…
Se a pergunta for verificar o máscara de sub rede e descobrir quais ip’s fazem parte da rede informada seria algo assim:
String ip = "200.100.10.0";
int nHost = 7;
String nMask = "255.255.255." + Integer.toString(255-nHost);
int broadcast = Integer.parseInt(ip.split("\\.")[3]) | (255 - Integer.parseInt(nMask.split("\\.")[3]));
String bcast = ip.split("\\.")[0] + "." + ip.split("\\.")[1] + "." + ip.split("\\.")[2] + "." + Integer.toString(broadcast);
String net = ip.split("\\.")[0] + "." + ip.split("\\.")[1] + "." + ip.split("\\.")[2] + "." + Integer.toString(broadcast-nHost);
String primeiroIP = ip.split("\\.")[0] + "." + ip.split("\\.")[1] + "." + ip.split("\\.")[2] + "." + Integer.toString(broadcast-nHost+1);
String ultimoIP = ip.split("\\.")[0] + "." + ip.split("\\.")[1] + "." + ip.split("\\.")[2] + "." + Integer.toString(broadcast-1);
System.out.println("IP > " + ip);
System.out.println("Mascara > " + nMask);
System.out.println("Subnet > " + net);
System.out.println("Primeiro IP > " + primeiroIP);
System.out.println("Ultimo IP > " + ultimoIP);
System.out.println("Broadcast > " + bcast);
Deixa pra lá. Consegui o resultado requerido usando uma forma bem primitiva.
Endereços IPv4 são números naturais de 32 bits, essa forma de notação decimal pontuada, como 208.109.100.149, é somente uma forma dos seres humanos lerem o número, computadores trabalham com binários.
Neste caso 208.109.100.149 vira 11010000011011010110010010010101 em binário, ou D06D6495 em hexadecimal.
A máscara 255.255.255.0, ou 11111111111111111111111100000000, ou FFFFFF00, representa uma rede /24, ou seja, dos 32 bits, 24 bits são para referenciar a rede, 8 bits são para os hosts. Com 8 bits você pode representar 256 números diferentes. No casos de redes e hosts IP, sempre o primeiro número e o último número são reservados para a rede, e para broadcast. Ou seja, uma rede /24 só tem 254 possíveis hosts nela.
Uma máscara 255.255.255.240, ou 11111111111111111111111111110000 é /28, 4 bits para endereçamento, 16 números, 14 hosts. Por exemplo:
Rede 200.100.10.0, máscara 255.255.255.240, hosts 200.100.10.[1-14], broadcast 200.100.10.15
Rede 200.100.10.16, máscara 255.255.255.240, hosts 200.100.10.[17-30], broadcast 200.100.10.31