Inteiro (ciência da computação)

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Question book.svg
Esta página ou secção não cita nenhuma fonte ou referência, o que compromete sua credibilidade (desde março de 2011).
Por favor, melhore este artigo providenciando fontes fiáveis e independentes, inserindo-as no corpo do texto por meio de notas de rodapé. Encontre fontes: Googlenotícias, livros, acadêmicoScirusBing. Veja como referenciar e citar as fontes.

Em ciência da computação, um inteiro é um dado do tipo integral, um tipo de dado que representa algum subconjunto finito dos inteiros matemáticos. Tipos de dados integrais podem ser de tamanhos diferentes e podem ou não ser permitido conterem valores negativos. Inteiros são normalmente representados em um computador como um grupo de dígitos binários. O tamanho do grupo varia de modo que o conjunto de tamanhos de inteiros disponíveis variam entre tipos diferentes de computadores. O hardware do computador quase sempre fornece uma maneira de representar um registro do processador ou endereço de memória como um inteiro.

Valor e representação[editar | editar código-fonte]

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; n bits disponíveis podem codificar 2^n 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 n representar números de -2^{(n-1)} a 2^{(n-1)}-1. 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 | editar código-fonte]

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 | editar código-fonte]

Ponteiros[editar | editar código-fonte]

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 | editar código-fonte]

Um inteiro com largura de quatro bits é chamado nibble, e representa um dígito em numeração hexadecimal.

Bytes e octetos[editar | editar código-fonte]

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 | editar código-fonte]

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.

Ver também[editar | editar código-fonte]