Inteiro (ciência da computação): diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
m
Etiqueta: Inserção de predefinição obsoleta
Linha 3: Linha 3:


== Valor e representação ==
== Valor e representação ==
O ''valor'' de um item com um tipo integral é o inteiro matemático ao qual ele corresponde. Os tipos integrais podem ser ''sem sinal'' (capazes de representar apenas números inteiros não negativos) ou ''com sinal'' (capazes de representar números inteiros negativos também).<ref>{{cite web |url=http://www.swarthmore.edu/NatSci/echeeve1/Ref/BinaryMath/NumSys.html |title=Representation of numbers |last=Cheever |first=Eric |publisher=Swarthmore College |access-date=2011-09-11}}</ref>
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).


Um valor inteiro é normalmente especificado no [[código-fonte]] de um programa como uma sequência de dígitos opcionalmente prefixados com + ou -. Algumas linguagens de programação permitem outras notações, como hexadecimal (base 16) ou octal (base 8). Algumas linguagens de programação também permitem [[Separador decimal#Agrupamento de dígitos|separadores de grupos de dígitos]].<ref>{{cite web|author=Madhusudhan Konda |url=http://radar.oreilly.com/2011/09/java7-features.html |title=A look at Java 7's new features - O'Reilly Radar |publisher=Radar.oreilly.com |date=2011-09-02 |access-date=2013-10-15}}</ref>
A representação mais comum de um inteiro positivo é uma cadeia de [[bit]]s, usando o [[Sistema binário (matemática)|sistema binário]]. A ordem dos bits varia de acordo com a [[arquitetura de computadores|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; <math>n</math> bits disponíveis podem codificar <math>2^n</math> números. Por exemplo, um tipo inteiro sem sinal com largura de oito bits (um [[byte]]) representa 256 números, de 0 a 255.


A ''representação interna'' desse dado é a forma como o valor é armazenado na memória do computador. Ao contrário dos inteiros matemáticos, um dado típico em um computador tem algum valor mínimo e máximo possível.
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 <math>n</math> representar números de <math>-2^{(n-1)}</math> a <math>2^{(n-1)}-1</math>. 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.

A representação mais comum de um número inteiro positivo é uma sequência de [[bit]]s, usando o [[sistema numérico binário]]. A ordem dos [[bytes]] de memória que armazenam os bits varia (veja [[Extremidade (ordenação)|extremidade]]. A ''largura'' ou ''precisão'' de um tipo integral é o número de bits em sua representação. Um tipo integral com ''n'' bits pode codificar 2<sup>''n''</sup> números; por exemplo, um tipo sem sinal normalmente representa os valores não negativos de 0 a 2<sup>''n''</sup>−1. Outras codificações de valores inteiros para padrões de bits são algumas vezes usadas, por exemplo, [[Codificação binária decimal|decimal codificado em binário]] ou [[código de Gray]], ou como códigos de caracteres impressos, como [[ASCII]].

Existem quatro [[Representação de números com sinal|maneiras bem conhecidas de representar números com sinais]] em um sistema de computação binário. O mais comum é o [[Complemento para dois|complemento de dois]], que permite que um tipo integral com sinal com ''n'' bits represente números de −2<sup>(''n''−1)</sup> a 2<sup>(''n''−1)</sup>−1. A aritmética de complemento de dois é conveniente porque uma [[Função bijectiva|correspondência um-para-um]] perfeita entre representações e valores (em particular, sem +0 e -0 separados), e porque [[adição]], [[subtração]] e [[multiplicação]] não precisam distinguir entre tipos com e sem sinal. Outras possibilidades incluem [[Offset binário|binário de deslocamento]], [[Representação de números com sinal#Método sinal-e-magnitude|magnitude de sinal]] e [[complemento de um]].

Algumas linguagens de computador definem tamanhos inteiros de forma independente da máquina; outras têm definições variadas dependendo do tamanho da palavra do processador subjacente. Nem todas as implementações de linguagem definem variáveis ​​de todos os tamanhos inteiros, e os tamanhos definidos podem nem mesmo ser distintos em uma implementação particular. Um número inteiro em uma [[linguagem de programação]] pode ter um tamanho diferente em uma linguagem diferente ou em um processador diferente.


== Exemplos comuns ==
== Exemplos comuns ==

Revisão das 18h27min de 3 de junho de 2021

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

O valor de um item com um tipo integral é o inteiro matemático ao qual ele corresponde. Os tipos integrais podem ser sem sinal (capazes de representar apenas números inteiros não negativos) ou com sinal (capazes de representar números inteiros negativos também).[1]

Um valor inteiro é normalmente especificado no código-fonte de um programa como uma sequência de dígitos opcionalmente prefixados com + ou -. Algumas linguagens de programação permitem outras notações, como hexadecimal (base 16) ou octal (base 8). Algumas linguagens de programação também permitem separadores de grupos de dígitos.[2]

A representação interna desse dado é a forma como o valor é armazenado na memória do computador. Ao contrário dos inteiros matemáticos, um dado típico em um computador tem algum valor mínimo e máximo possível.

A representação mais comum de um número inteiro positivo é uma sequência de bits, usando o sistema numérico binário. A ordem dos bytes de memória que armazenam os bits varia (veja extremidade. A largura ou precisão de um tipo integral é o número de bits em sua representação. Um tipo integral com n bits pode codificar 2n números; por exemplo, um tipo sem sinal normalmente representa os valores não negativos de 0 a 2n−1. Outras codificações de valores inteiros para padrões de bits são algumas vezes usadas, por exemplo, decimal codificado em binário ou código de Gray, ou como códigos de caracteres impressos, como ASCII.

Existem quatro maneiras bem conhecidas de representar números com sinais em um sistema de computação binário. O mais comum é o complemento de dois, que permite que um tipo integral com sinal com n bits represente números de −2(n−1) a 2(n−1)−1. A aritmética de complemento de dois é conveniente porque há uma correspondência um-para-um perfeita entre representações e valores (em particular, sem +0 e -0 separados), e porque adição, subtração e multiplicação não precisam distinguir entre tipos com e sem sinal. Outras possibilidades incluem binário de deslocamento, magnitude de sinal e complemento de um.

Algumas linguagens de computador definem tamanhos inteiros de forma independente da máquina; outras têm definições variadas dependendo do tamanho da palavra do processador subjacente. Nem todas as implementações de linguagem definem variáveis ​​de todos os tamanhos inteiros, e os tamanhos definidos podem nem mesmo ser distintos em uma implementação particular. Um número inteiro em uma linguagem de programação pode ter um tamanho diferente em uma linguagem diferente ou em um processador diferente.

Exemplos comuns

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

Ponteiros

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

Ver artigo principal: nibble

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

Bytes e octetos

Ver artigo principal: Byte

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

Ver artigo principal: Word

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

  1. Cheever, Eric. «Representation of numbers». Swarthmore College. Consultado em 11 de setembro de 2011 
  2. Madhusudhan Konda (2 de setembro de 2011). «A look at Java 7's new features - O'Reilly Radar». Radar.oreilly.com. Consultado em 15 de outubro de 2013