Ir ao conteúdo
  • Cadastre-se

Variável do tipo inteiro


Posts recomendados

Pessoal estou com uma duvida, em um texto diz sobre a Variável do Tipo Inteiro "Esse tipo ocupa +-  2 Bytes, com esse espaço na memória, é possível trabalhar com valores que variam entre -32767 e 32768. É um total de 65.536 possibilidades numéricas que podem ser trabalhadas."

Se 2 caractere ocupa 2 Bytes, como podem existir 65.536 possibilidades?

E também o quê são esse números -32767 e 32768 ?

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Medivh Vamos lá:

1 byte são 8 bits, uma sequência de 8 zeros e uns. Logo 2 bytes são 16 bits e para descobrir quantos números você consegue guardar é só elevar 2 ao número de bits que você quer.

Nesse caso são: 2^16 que dá 65536.

Então você consegue guardar de 0 até 65536, só que durante algum algorítmo o número pode resultar em negativo e você não conseguiria armazenar ele pois seu range é de 0~65536.

Para resolver isso colocaram o 0 como se estivesse no meio do range, podendo subir até 32768 e descer até -32767

Se algum dia você não precisar utilizar qualquer valor negativo você pode declarar a variavel como unsigned int, que será considerado de 0~65536.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Medivh e @Alex Temnyk.

 

Vou  tentar não aprofundar, e falar o que acho que sei/lembro de cabeça...

 

Então, creio que a definição de inteiro dependa da linguagem de programação, e até mesmo do compilador (ou "biblioteca de tipos"). É algo "definido/criado" por alguém/organização...

 

1 hora atrás, Medivh disse:

"Esse tipo ocupa +-  2 Bytes, com esse espaço na memória, é possível trabalhar com valores que variam entre -32767 e 32768. É um total de 65.536 possibilidades numéricas que podem ser trabalhadas."

 

Nesse contexto, 2 bytes seriam iguais a 16 bits, pois 1 byte = 8 bits. (obs.: acho que @Alex Temnyk confundiu "byte" com "kilo" :)).

 

 

1 hora atrás, Medivh disse:

Se 2 caractere ocupa 2 Bytes, como podem existir 65.536 possibilidades?

 

2^16 = 65536. Veja: o texto fala de números, não de caracteres! De qualquer forma, quantos possibilidades tem em um caractere? entende?

 

Como você mesmo sugere, um caractere ocupa (acho) um byte, ou seja, 8 bits. 2^8 = 256. Logo, 256 possibilidades. (a..z +  A..Z + caracteres com acentos + caracteres especiais + "comandos" (ex.: ENTER, ESC, TAB) etc)...

 

 

1 hora atrás, Medivh disse:

E também o quê são esse números -32767 e 32768 ?

 

Dentro dessas possibilidades o "alguém/organização" define o que cada uma dessas possibilidades significa... Como "inteiros" usam positivos e negativos, metade* foi prum lado, a outra por outro, ou seja, de "-32767 a 32768" (lembrem-se tem o 0).

 

Um exemplo hipotético:

0.000.000.000.000.000 = 0

0.000.000.000.000.001 = 1

0.000.000.000.000.010 = 2

...

0.000.000.000.000.100 = 8

...

1.111.111.111.111.101 = -32765

1.111.111.111.111.110 = -32766

1.111.111.111.111.111 = -32767

 

O 32768, nesse exemplo, ficaria no meio* (preguiça de calcular).

 

O mesmo ocorre com os caracteres, que para "traduzir", utilizam de uma tabela. Cada possibilidade seria uma coisa... para facilitar a comunicação podem tentar criar/utilizar padrões, como da Unicode (vide codificação de texto... tem um monte de "padrões").

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

2 horas atrás, grievous disse:

1 byte são 8 bits, uma sequência de 8 zeros e uns. Logo 2 bytes são 16 bits e para descobrir quantos números você consegue guardar é só elevar 2 ao número de bits que você quer.

Nesse caso são: 2^16 que dá 65536.

@grievous

Então seguindo o seu exemplo: no caso de 4 Bytes, sendo 8 bits cada Byte seria - 4^32 = n (que da um número bem grande) possibilidades. Pra confirmar, esses 4 Byte pode fazer também 4^8 ou 4^16 e assim por diante?

 

2 horas atrás, grievous disse:

Então você consegue guardar de 0 até 65536, só que durante algum algorítmo o número pode resultar em negativo e você não conseguiria armazenar ele pois seu range é de 0~65536.

Para resolver isso colocaram o 0 como se estivesse no meio do range, podendo subir até 32768 e descer até -32767

Se algum dia você não precisar utilizar qualquer valor negativo você pode declarar a variavel como unsigned int, que será considerado de 0~65536.

 

Como seria essa linha usando o "unsigned int"?

 

@Simon Viegas 

2 horas atrás, Simon Viegas disse:

1.111.111.111.111.101 = -32765

1.111.111.111.111.110 = -32766

1.111.111.111.111.111 = -32767

Pode parecer estranho essa perguntar mas, qual a influência desse "." (ponto), entre os números binários?

 

 

Bom as respostas dos dois esclareceram de mais minhas dúvidas, obrigado!!!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Medivh Pelo que eu sabia você deve converter os bytes em bits e a partir daí elevar 2 a quantidade de bits que deseja. Não sei te dizer a função direta a partir dos bytes.

Em C++ você declara um int assim:

 

int variavel;

 

Essa variável é daquela que vai de -32767 a 32768 mas se eu quiser o inteiro de 0 a 65536 é só fazer assim:

unsigned int variavel;

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

 

13 minutos atrás, grievous disse:

se eu quiser o inteiro de 0 a 65536 é só fazer assim:


No Pascal temos o tipo word. obs.: Não sei se funciona em qualquer compilador (usei muito no TurboPascal... <-- muito bom por sinal!)..

Vide exemplo de tabela para FreePascal:

tipos_numericos_pascal.jpg

Fonte: http://freepascal.org/docs-html/ref/refsu5.html

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!