Autor
|
Tema: Cual es el valor maximo de una variable. (Leído 9,006 veces)
|
CoolTesting
Desconectado
Mensajes: 76
El ganador es el que sabe perder.
|
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.
|
|
|
En línea
|
El ganador es el que sabe perder.
|
|
|
madoko
Desconectado
Mensajes: 79
|
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?
|
|
|
En línea
|
|
|
|
CoolTesting
Desconectado
Mensajes: 76
El ganador es el que sabe perder.
|
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.
|
|
|
En línea
|
El ganador es el que sabe perder.
|
|
|
MinusFour
|
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).
|
|
|
En línea
|
|
|
|
CoolTesting
Desconectado
Mensajes: 76
El ganador es el que sabe perder.
|
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.
|
|
|
En línea
|
El ganador es el que sabe perder.
|
|
|
A.I.
Desconectado
Mensajes: 61
|
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.
|
|
|
En línea
|
|
|
|
CoolTesting
Desconectado
Mensajes: 76
El ganador es el que sabe perder.
|
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.
|
|
|
En línea
|
El ganador es el que sabe perder.
|
|
|
A.I.
Desconectado
Mensajes: 61
|
|
|
|
En línea
|
|
|
|
MinusFour
|
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).
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
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
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como imprimir el valor de una variable definida en una variable...
Scripting
|
nhaalclkiemr
|
5
|
6,978
|
3 Mayo 2007, 17:58 pm
por sirdarckcat
|
|
|
Minimo Valor y Maximo Valor de Un Arbol
Programación C/C++
|
Jupiter34
|
1
|
7,800
|
16 Noviembre 2012, 18:17 pm
por Jupiter34
|
|
|
Asignar un valor a una variable(ScriptA)Obtener esa variable (ScriptB)-UNITY c#
Programación General
|
USLO
|
1
|
4,706
|
8 Octubre 2013, 17:51 pm
por Eleкtro
|
|
|
MOVIDO: Asignar un valor a una variable(ScriptA)Obtener esa variable (ScriptB)-UNITY c#
Scripting
|
Eleкtro
|
0
|
2,824
|
8 Octubre 2013, 17:49 pm
por Eleкtro
|
|
|
Valor maximo de registros en visor de sucesos
Windows
|
torre21
|
8
|
4,846
|
28 Noviembre 2013, 14:57 pm
por torre21
|
|