PHP para Iniciantes: Tipos de Dados Primitivos - Inteiros

No artigo anterior, falamos um pouco sobre a tipagem booleana (boolean) e sobre sua profunda relação com lógica de programação e binários. Mas afinal, dá pra fazer algumas operações binárias no PHP (e entender alguma coisa)?

Sim, dá sim! E pra isso você precisa ter uma boa compreensão sobre Bases Numéricas. Mas tudo bem se não tiver, eu vou falar um pouquinho sobre as bases operáveis no PHP: binária, octal, decimal e hexadecimal. Tudo isso tem relação com inteiros porque as notações utilizadas para trabalhar nessas bases são apenas números inteiros. Vamos lá?

Inteiros (int)

Para quem está acostumado com notações matemáticas, o resumo mais curto que podemos mencionar sobre a definição de números inteiros é a que está presente na documentação oficial do PHP: {..., -2, -1, 0, 1, 2, ...}.

Então, desde que não queira representar uma fração (ex.: R$1,50), você poderá representar o seu dado como um número inteiro. Porém, essa notação matemática está incompleta. Afinal, os recursos de manipulação de dados são limitados pela configuração do PHP e pelo sistema operacional onde está rodando.

Como assim, Kiko? Não é inifinito?

Exatamente! Não é infinito de verdade. E para provar isso, há duas constantes*¹ que informam quais os limites máximo e mínimo configurados no seu runtime. São elas: PHP_INT_MAX e PHP_INT_MIN, respectivamente. Portanto, a notação correta seria {PHP_INT_MIN, ..., -2, -1, 0, 1, 2, ..., PHP_INT_MAX}.

  • *¹: vamos falar sobre constantes em outros artigos

Por que preciso saber disso, Kiko?

Bem, a falsa impressão de que os números são realmente infinitos nas suas aplicações podem trazer problemas sérios ao longo do ciclo de vida do projeto. Se por um acaso você fizer uma Google da vida e resolver indexar TUDO registrando por um número sequencial, você pode ter graves problemas ao atingir o número máximo... Porque a aplicação não vai conseguir mais computar um número maior que isso. No mínimo vai estourar a memória e criar um novo "Bug do Milênio".

Então, independente da linguagem, sempre que for desenvolver alguma coisa, lembre-se de descobrir os limites e em quanto tempo o seu projeto poderia excedê-los. O certo é procurar alternativas para não precisar se preocupar com isso, mas nem sempre temos tempo pra isso, certo? Mesmo se o projeto estiver seguindo todos os padrões internacionais, pode acontecer de uma arquitetura não servir para 30 anos de armazenamento de dados, rs.

Enfim, agora que você sabe o que é um inteiro, você sabe como ESCREVER um inteiro?

P*, Kiko, peraê vei

<?php
echo 123;

Toma aí o inteiro 123 haha

É isso mesmo! Mas essa não é a única forma de escrever. Como mencionei lá no começo do artigo, há formas bem interessantes de se trabalhar com números em outras bases numéricas. As sintaxes são bem simples, bastando iniciar o número com o prefixo da base numérica que estará representando:

  • Binário: 0b... (zero, bê... e o número);
  • Octal: 0... (zero... e o número);
  • Decimal: ... (só o número mesmo, sem começar com zero, por motivos óbvios);
  • Hexadecimal: 0x... (zero, xis... e o número).

Mas Kiko, o que é base numérica?

Tem muito estudo envolvido, caso tenha interesse. O máximo que posso fazer por você agora é tentar simplificar tudo o que aprendi de forma resumida... Bem, você aprendeu até aqui que, para representar um número, você precisa usar pelo menos um dos seguintes símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9. Todos os números que você aprendeu na escola são compostos por essa listinha. Já parou pra pensar o porquê?

Bom, quando escrevemos um número sem definir uma base numérica, significa que estamos usando a base numérica padrão que é a decimal. Essa base significa que todos os números são limitados a DEZ símbolos, daí o decimal.

Peraí, Kiko... Então uma base numérica nada mais é do que a quantidade de símbolos disponíveis para descrever um número?

EXATAMENTE. Se você tem dez símbolos para representar um número, toda vez que você atingir o limite de símbolos e for acrescentar mais um, você irá reiniciar aquela coluna e acrescentar o primeiro símbolo à esquerda.

QUÊ?

Ah, vamos à prática: 9 + 1?

10!

Por que?

...

9 é o último símbolo da base decimal. Portanto, quando você acrescenta um número a ele, o dado em sua posição volta para o dígito 0 e o primeiro dígito de valor aparece à esquerda, formando o número "10".

O mesmo processo ocorre em todas as outras bases numéricas:

  • Binária é a base com dois símbolos: 0 e 1. Então 1+1 em binário dá 10!... Porque não tem mais símbolos, o que resulta na mesma operação que mencionei anteriormente.
  • Octal é a base com oito símbolos: 0, 1, 2, 3, 4, 5, 6 e 7. Portanto, 7+1 = 10;
  • Decimal você já conhece muito bem;
  • Hexadecimal é a base com dezesseis símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D e F. Ou seja, F + 1 = 10.

Se você converter:

  • 10 binário para inteiro, dá 2;
  • 10 octal para inteiro, dá 8;
  • 10 hexadecimal para inteiro, dá 16.

Quer provas? Rode aí no PHP:

<?php
echo 0b10; // 2 em binário
echo 010; // 8 em octal
echo 0x10; // 16 em hexadecimal

Enfim, acredito que esse é o máximo que posso te explicar superficialmente. Eu, particularmente, acho esse assunto maravilhoso. Foi uma das coisas que mais me engajou a estudar Circuitos Digitais. Espero que você também tenha gostado e aprendido alguma coisa aqui. Não esquece de comentar, beleza?

Inté!