Inteiro (tipo de dado)
Em ciência da computação, inteiro é qualquer tipo de dado que pode representar um subconjunto dos números inteiros. Tendo em vista que na Matemática o conjunto dos números inteiros é infinito, e que em termos computacionais é inviável representar um conjunto infinito de elementos, o tipo de dado inteiro limita-se a representar um bloco bem definido de números.
Índice |
Valor e representação [editar]
O valor de um dado armazenado com um tipo inteiro é o próprio número inteiro o qual ele corresponde. A representação do dado é a maneira como o valor é armazenado na memória de computador. Tipos de dados inteiros podem ter sinal ou não, o que determina se o tipo é capaz de representar números negativos (o sinal é essencial para tal).
A representação mais comum de um inteiro positivo é uma cadeia de bits, usando o sistema binário. A ordem dos bits varia de acordo com a arquitetura do sistema (pode ser little endian ou big endian). A largura (ou precisão) de um tipo inteiro é a quantidade de bits disponíveis para a sua representação;
bits disponíveis podem codificar
números. Por exemplo, um tipo inteiro sem sinal com largura de oito bits (um byte) representa 256 números, de 0 a 255.
Existem três maneiras diferentes para representar números negativos em um sistema binário. A mais comum é o complemento de dois, que permite a um tipo de dado inteiro com sinal de largura
representar números de
a
. Essa aritmética é conveniente pois existe uma correspondência perfeita entre a representação e o valor, e porque as operações de adição, subtração e multiplicação não precisam distinguir entre tipos sem sinal e tipos com sinal. Outras possibilidades são magnitude de sinal e complemento de um.
Exemplos comuns [editar]
| Largura (bits) | Nome | Bloco com sinal | Bloco sem sinal | Uso |
|---|---|---|---|---|
| 8 | byte, octeto | -128 a +127 | 0 a +255 | Caracteres ASCII, C int8_t, Java byte |
| 16 | halfword, word | -32 768 a +32 767 | 0 a +65 535 | Caracteres UCS-2, C int16_t, Java char, Java short |
| 32 | word, doubleword, longword | -2 147 483 648 a +2 147 483 647 | 0 a +4 294 967 295 | Caracteres UCS-4, Truecolor com canal alfa, C int32_t, Java int |
| 64 | doubleword, longword, quadword | -9 223 372 036 854 775 808 a +9 223 372 036 854 775 807 | 0 a +18 446 744 073 709 551 615 | C int64_t, Java long |
| 128 | -170 141 183 460 469 231 731 687 303 715 884 105 728 a +170 141 183 460 469 231 731 687 303 715 884 105 727 | 0 a +340 282 366 920 938 463 463 374 607 431 768 211 455 |
Diferentes CPUs suportam diferentes tipos de dados inteiros. Geralmente é aceito tanto tipos com sinal quanto sem sinal, a variação é maior na largura de bits suportada. A tabela acima lista larguras geralmente usadas em hardware por processadores. Linguagens de programação de alto nível fornecem mais possibilidades. Pode-se instancializar um tipo de dado com o dobro da largura máxima permitida pela arquitetura, ou criar um campo de bits com largura menor que o mínimo definido.
Linguagens como Lisp, REXX e Haskell suportam inteiros de precisão arbitrária (também conhecidos como bignum), que podem, inclusive, crescer infinitamente até os limites físicos de memória do sistema computacional.
Um tipo de dado boolean pode representar dois valores, 0 e 1. Esse tipo de dado inteiro pode ser armazenado usando somente um bit, mas por questões de conveniência e desempenho de acesso, geralmente é alocado um byte completo para esse tipo de dado.
Aplicações [editar]
Ponteiros [editar]
Um ponteiro é geralmente representado por um inteiro sem sinal de uma largura específica, com tamanho geralmente igual a maior largura permitida pelo hardware da arquitetura do sistema computacional. O valor armazenado por esse inteiro é geralmente o endereço de memória apontado.
Nibble [editar]
Um inteiro com largura de quatro bits é chamado nibble, e representa um dígito em numeração hexadecimal.
Bytes e octetos [editar]
O termo byte originalmente significava "a menor unidade endereçável de memória", e, no passado, de acordo com a arquitetura poderia representar 5, 6, 7, 8, 9 bits de largura. O termo octeto sempre se refere a um tipo de dado com largura de 8 bits. O termo é geralmente usado em redes de computadores, no qual sistemas com arquiteturas diferentes (com possíveis larguras diferentes) devem comunicar-se em um protocolo comum.
No uso moderno, byte quase sempre refere-se a oito bits, já que todas as outras opções de largura caíram em desuso. Isso significa que byte tornou-se um sinônimo para octeto.
Words [editar]
O termo word refere-se a um grupo de bits processados simultaneamente por processadores de uma determinada arquitetura. Portanto, sua largura depende do processador em questão. Várias diferentes larguras são usadas, incluindo 6, 8, 12, 16, 18, 24, 32, 36, 39, 48, 60 e 64 bits. Atualmente (2007), a largura de 32 bits é a mais comum entre computadores de uso geral, com a chegada cada vez mais comum de larguras de 64 bits. Sistemas embarcados ainda utilizam larguras de 8 e 16 bits.