Jonathan, eu particularmente uso o seguinte macete, pra não ter que fazer conversão binária de cabeça:
Exemplo 1 - Máscara: 255.128.0.0:
- primeiro byte, considere 255 e substraia com 255 = 0;
- segundo byte, considere 255 e subtraia com 128 = 127;
- terceiro byte, considere 255 e subtraia com 0 = 255; e
- quarto byte, considere 255 e subtraia com 0 = 255.
Para descobrir as redes, considerando o endereço 122.0.0.0, o primeiro endereço desta rede será 122.0.0.0 e o último será 122.127.255.255 (122.0.0.0 + 0.127.255.255). A rede seguinte será 122.128.0.0 e terminará em 122.255.255.255 (122.128.0.0 + 0.127.255.255). Neste caso, totaliza-se 2 redes ((255 + 1) / (127 + 1) = 2)
Exemplo 2 - Máscara: 255.192.0.0:
- primeiro byte, considere 255 e substraia com 255 = 0;
- segundo byte, considere 255 e subtraia com 192 = 63;
- terceiro byte, considere 255 e subtraia com 0 = 255; e
- quarto byte, considere 255 e subtraia com 0 = 255.
Para descobrir as redes, considerando o endereço 122.0.0.0, O primeiro endereço desta rede será 122.0.0.0 e o último será 122.63.255.255 (122.0.0.0 + 0.63.255.255). A rede seguinte será 122.64.0.0 e terminará em 122.127.255.255 (122.64.0.0 + 0.63.255.255). A próxima será 122.128.0.0 e terminará em 122.191.255.255 (122.128.0.0 + 0.63.255.255). E assim por diante. Neste caso, totaliza-se 4 redes ((255 + 1) / (63 + 1) = 4)
Este raciocínio pode ser aplicado para qualquer posição do byte de segmentação, seja na primeira, segunda, terceira ou quarta posição.
Relembrando que o primeiro endereço de uma rede é o endereço dela mesma e o último é o endereço de broadcast. Assim sendo, não devem ser usados para a definição do endereço dos correspondentes hosts.