Eu criei um método muito simples de calcular endereços de resumo de rotas sem converter em binário. Essencialmente, você apenas compara os números com os valores dos bits e determina se eles correspondem a cada bit.
Exemplo 1.
192.168.1.160/30
192.168.1.164/29
192.168.1.172/29
192.168.1.180/30
você começa levando o maior e o menor número do intervalo a ser resumido.
160, 180.
compare-os com os valores de bit a partir da esquerda.
128 64 32 16 8 4 2 1
Como os dois números são maiores que 128, ambos correspondem nesse bit e têm um valor de um nesse bit.
128 64 32 16 8 4 2 1
1
adicione o valor do próximo bit (128 + 64 = 192) e determine se ambos os números são maiores ou menores que esse valor. porque 160 e 180 são ambos menores do que 192, ambos combinam naquele bit e ambos possuem um valor 0 para aquele bit.
128 64 32 16 8 4 2 1
1 0
agora porque os dois números eram menores que 192, você adiciona 128 ao próximo valor de bit de 32 e desconsidera o valor de bit de 64. (128 + 32 = 160) porque ambos 160 e 180 são maiores que 160 esse bit e ambos têm um valor de 1 para esse bit.
128 64 32 16 8 4 2 1
1 0 1
agora adicione o valor acumulado do endereço do resumo ao próximo valor de bit de 16 (128 + 32 = 160 + 16 = 176) porque 160 é menor que e 180 é maior que 176, eles têm um valor diferente nesse bit Portanto, este bit não está incluído no endereço de resumo.
128 64 32 16 8 4 2 1
1 0 1 x x x x x
para que você possa ver que o endereço do resumo de rota para este exemplo é 192.168.1.160/27
Eu vou dar outro exemplo aqui, mas uma vez que você pegar o jeito dele, você pode elaborar endereços de resumo muito rapidamente em sua cabeça.
Exemplo 2
172.16.146.0/24
172.16.147.0/23
172.16.149.0/23
172.16.151.0/24
valores de bit: 128 64 32 16 8 4 2 1
olhando para o número mais alto e mais baixo no exemplo, 146 + 151, são ambos maiores ou menores do que o primeiro valor de bit de 128. ambos são mais altos, então este bit combina com um valor de 1.
128 64 32 16 8 4 2 1
1
adicionando o próximo valor de bit (128 + 64 = 192) eles são maiores ou menores que 192? ambos são mais baixos, então esse bit tem um valor igual a 0 para ambos.
128 64 32 16 8 4 2 1
1 0
adicionando o próximo valor de bit de 32 ao valor de resumo acumulado de 128 (128 + 32 = 160), você pode ver 146 e 151 menores que 160, então este bit tem um valor de correspondência de 0 para ambos os bits.
128 64 32 16 8 4 2 1
1 0 0
adicionando o próximo valor de bit de 16 ao valor de resumo acumulado de 128 (128 + 16 = 144) você pode ver que ambos 146 + 151 são maiores que 144, então este bit tem um valor correspondente de 1.
128 64 32 16 8 4 2 1
1 0 0 1
adicionando o próximo valor de bit de 8 ao valor de resumo acumulado de 144 (128 + 16 = 144 + 8 = 152) você pode ver que ambos os números são menores que 152, então ambos os números ainda correspondem neste bit com um valor de 0.
128 64 32 16 8 4 2 1
1 0 0 1 0
adicionando o próximo valor de bit de 4 ao valor de resumo acumulado de 144 (128 + 16 = 144 + 4 = 148) você pode ver que 146 é menor e 151 é maior que 148, então este bit não combina e não é parte do endereço do resumo da rota.
128 64 32 16 8 4 2 1
1 0 0 1 0 x x x
então a resposta para este exemplo é 172.16.144.0/21
No seu exemplo anterior (exemplo 3)
192.168.6.000/27
192.168.6.064/27
192.168.6.128/26
192.168.6.160/26
192.168.6.192/28
192.168.6.208/28
192.168.6.224/30
192.168.6.228/30
192.168.6.232/30
olhe apenas para o número mais alto e mais baixo 0 + 232, um é maior que 128 e um é menor para que você não precise procurar mais nada ou calcular mais nada. O primeiro bit com um valor de 128 não corresponde e não faz parte do endereço de resumo.
Alguns intervalos são mais fáceis do que outros, mas eu acho isso muito mais rápido, então espero que seja útil também.
Aoibheann