Ir ao conteúdo
  • Cadastre-se
Medivh

Variável do tipo inteiro

Recommended Posts

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 ?

Editado por Medivh
  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Medivh São os numeros que uma variável de inteiro desse tamanho aceita. o Range de alcance. 

Um numero inteiro ocupa 32 bits. 1byte = 1024 bits. 2 bytes..já te da o valor de combinação visto quanto ocupa cada inteiro. 
Abrs

  • Curtir 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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.

Editado por grievous
  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

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").

Editado por Simon Viegas
  • Curtir 2

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×