Cual es el valor maximo de una variable.

Iniciado por CoolTesting, 8 Noviembre 2015, 22:05 PM

0 Miembros y 1 Visitante están viendo este tema.

CoolTesting

Hola, me gustaria saber cual es el valor de una variable, por ejemplo, el tipo de datos int en mi ordenador equivale a  4 bytes.

Pero si en el int yo guardo por ejemplo este numero:

int i = 12345;

Estoy guardando 5 numeros, y cada numero equivale a un byte, entonces por que los guarda?, si si, ya se quizas estoy entendiendo mal, y estoy seguro de que lo estoy entendiendo mal porque de haberlo entendido bien no surgiria esta duda, me gustaria que me aclaren eso.

Gracias, de verdad me gustaria mucho saber el por que de esto.
El ganador es el que sabe perder.

madoko

Una variable ocupa lo que necesita. Lo que si diferencia es el tipo de datos que introduces, es decir en un int no puedes meter un string

No sé si eso responde a tu pregunta

P.D.: en qué estas programando?

CoolTesting

Cita de: madoko en  8 Noviembre 2015, 22:30 PM
Una variable ocupa lo que necesita. Lo que si diferencia es el tipo de datos que introduces, es decir en un int no puedes meter un string

No sé si eso responde a tu pregunta

P.D.: en qué estas programando?

Estoy programando en C++, eso lo entiendo correctamente los tipos de datos por ejemplo en un int no se puede meter un string, cada tipo de dato esta disenado para especificamente ese tipo.

Mi pregunta es, con la funcion sizeof() puedo ver el valor maximo que puede almacenar una variable en bytes, y si cada numero es 1 byte, y el tipo de dato int, tiene la capacidad maxima de 4 bytes, por que puedo guardar mas de 4 bytes en un int?

Esa es mi duda, capaz estoy mal solo quiero que me corrijan y me expliquen el por que pasa esto, saludos.
El ganador es el que sabe perder.

MinusFour

Cita de: CoolTesting en  8 Noviembre 2015, 23:09 PM
Estoy programando en C++, eso lo entiendo correctamente los tipos de datos por ejemplo en un int no se puede meter un string, cada tipo de dato esta disenado para especificamente ese tipo.

Mi pregunta es, con la funcion sizeof() puedo ver el valor maximo que puede almacenar una variable en bytes, y si cada numero es 1 byte, y el tipo de dato int, tiene la capacidad maxima de 4 bytes, por que puedo guardar mas de 4 bytes en un int?

Esa es mi duda, capaz estoy mal solo quiero que me corrijan y me expliquen el por que pasa esto, saludos.

El número que has puesto puede ser representado por 2 bytes por lo que no hay ningún problema para almacenarlo. No lo estás almacenando como un string (que entonces si serían 5 bytes).

CoolTesting

Cita de: MinusFour en  8 Noviembre 2015, 23:13 PM
El número que has puesto puede ser representado por 2 bytes por lo que no hay ningún problema para almacenarlo. No lo estás almacenando como un string (que entonces si serían 5 bytes).

Gracias, creo que te entendi un poco, 12345 <-- esta representado como si fueran 2 bytes, pero por que ?

Si bien es sabido un byte son 8 bits y cada letra y numeros (Excepto las mayusculas) segun tengo entendido equivalen a 1 byte.

Entonces -- >12345 <-- segun yo serian 5 bytes, ya que hay 5 numeros y cada numero equivale a 1 byte, lo cual vuelve a mi pregunta anterior, repito: a lo mejor estoy equivocado solo quiero una explicacion logica para esto, muchas gracias por comentar.
El ganador es el que sabe perder.

A.I.

Resumiendo y simplificando:

12345 en binario sería 11000000111001 (si no me equivoco)

necesitas 14 bits para representarlos, un int suele tener 32.

Además todos los enteros ocupan siempre el mismo número de bits, aunque pudiesen representarse con menos.

CoolTesting

Cita de: A.I. en  8 Noviembre 2015, 23:30 PM
Resumiendo y simplificando:

12345 en binario sería 11000000111001 (si no me equivoco)

necesitas 14 bits para representarlos, un int suele tener 32.

Además todos los enteros ocupan siempre el mismo número de bits, aunque pudiesen representarse con menos.

Excelente, creo que te entendi, lo que pasa es que los valores de las variables se traducen a su valor binario, ahora mi pregunta final es, cual seria la capacidad maxima de un int?

Osea el numero maximo que puede almacenar el tipo de dato int?, gracias creo que ahora entiendo mejor.
El ganador es el que sabe perder.


MinusFour

Cita de: CoolTesting en  8 Noviembre 2015, 23:20 PM
Si bien es sabido un byte son 8 bits y cada letra y numeros (Excepto las mayusculas) segun tengo entendido equivalen a 1 byte.

Su representación ASCII si ocupa 1 byte por letra o número pero el formato se usa para representar caracteres, no números. Para representar solo números no hace falta usar ASCII y pueden tomar su valor tal cual.

Si tu lenguaje de programación dice que el tipo de dato es de 4 bytes, significa que tienes 2^32 diferentes valores. Cada byte son 8 bits, por lo que son 32 bits en total y cada bit puede representar dos valores diferentes (1 y 0).


XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX


El número positivo más grande que puedes escribir con 32 dígitos binarios es: 2^32 - 1. Puedes escribir números desde 0 hasta 2^32 - 1. Si usas una notación con signo entonces depende del formato que uses (que me parece que por lo general es un bit). Por ejemplo, si usarás un bit para representar el signo, te quedarías todavía 31 bits para expresar el número, por lo que el número positivo más grande que puedes escribir es 2^31 - 1. También tienes un máximo para números negativos (- 2^31).

Eleкtro

La función SizeOf devuelve el tamaño estático de asignación de la representación de un type, que bien mirado también se puede evaluar como "el tamaño máximo" como has hecho, pero no es eso exactamente, es el tamaño, tal cual, asignes lo que asignes a ese type en particular.

El valor máximo de un entero firmado de 32 bit (o signed int32) es positivamente hablando 2.147.483.647 y negativamente hablando -2.147.483.648.

Ten en cuenta que los números enteros sin firmar (o unsigned int16/int32/int64) no pueden representarse como valores negativos, así que el valor máximo de un entero de 32 bit sin firmar es 4.294.967.295 y negativamente hablando 0.

El resto de detalles ya te lo ha explicado @MinusFour y compañía.

Saludos