Porque quando esses padrões foram criados, os computadores eram lentos e geralmente limitados a registros de 8 bits.
Comparar números com números era muito lento, especialmente se esses números tivessem que ser buscados na parte de trás, então REALMENTE retardaria a memória. Registros, isto é, o armazenamento "CPU on board" era muito mais rápido.
Além disso, esses computadores antigos tinham instruções especiais e mais rápidas para detectar "igual a zero", "diferente de zero", "inteiro negativo / positivo" (onde o sinal era ... adivinhe, o bit mais à esquerda, agora conexão com 127, que é o número com todos os binários "1", exceto o mais à esquerda = sinal?).
Portanto, esses eram números especiais, porque permitiam que os truques de programação economizassem muitos ciclos de CPU em operações realizadas com frequência.
Você nunca verá uma instrução "IF CallerIP=" 0 ", mas uma instrução" IF NotZero (CallerIP) ".
Você poderia verificar antigas instruções de montagem como "BEQ, BNE" (CPUs 6502) para explicações mais longas. Também verifique esta página .
No final:
0, 255 e 127 podem ser verificados com uma instrução mais rápida. Ainda mais linguagens de alto nível como o C possuem funções de comparação de "encurtamento" que o compilador pode otimizar internamente em uma única instrução.
Anos 70 e 80 programadores realmente produziram arquiteturas magníficas com recursos super-escassos, por trás de padrões como numeração de IP, há muito pensamento e genialidade.