Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: CoolTesting en 8 Noviembre 2015, 22:05 pm



Título: Cual es el valor maximo de una variable.
Publicado por: CoolTesting en 8 Noviembre 2015, 22:05 pm
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.


Título: Re: Cual es el valor maximo de una variable.
Publicado por: 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?


Título: Re: Cual es el valor maximo de una variable.
Publicado por: CoolTesting en 8 Noviembre 2015, 23:09 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.


Título: Re: Cual es el valor maximo de una variable.
Publicado por: MinusFour en 8 Noviembre 2015, 23:13 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).


Título: Re: Cual es el valor maximo de una variable.
Publicado por: CoolTesting en 8 Noviembre 2015, 23:20 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.


Título: Re: Cual es el valor maximo de una variable.
Publicado por: 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.


Título: Re: Cual es el valor maximo de una variable.
Publicado por: CoolTesting en 8 Noviembre 2015, 23:42 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.


Título: Re: Cual es el valor maximo de una variable.
Publicado por: A.I. en 8 Noviembre 2015, 23:48 pm
Una búsqueda rápida en Google;

http://www.tutorialspoint.com/cprogramming/c_data_types.htm (http://www.tutorialspoint.com/cprogramming/c_data_types.htm)


Título: Re: Cual es el valor maximo de una variable.
Publicado por: MinusFour en 9 Noviembre 2015, 04:55 am
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).

Código:
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).


Título: Re: Cual es el valor maximo de una variable.
Publicado por: Eleкtro en 9 Noviembre 2015, 07:47 am
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


Título: Re: Cual es el valor maximo de una variable.
Publicado por: A.I. en 9 Noviembre 2015, 10:50 am
...entero firmado ...

...sin firmar...

Una pequeña matización, signed y unsigned en este contexto es con signo y sin signo, no firmado y sin firmar :-P. Aunque ésto viene más a cuento en el hilo de malas traducciones :-P


Título: Re: Cual es el valor maximo de una variable.
Publicado por: Eleкtro en 9 Noviembre 2015, 11:18 am
Una pequeña matización, signed y unsigned en este contexto es con signo y sin signo, no firmado y sin firmar :-P. Aunque ésto viene más a cuento en el hilo de malas traducciones :-P

Gracias por la pequeña corrección. Mi traducción de algunos términos al Castellano a veces está al nivel de esto:
  • http://foro.elhacker.net/foro_libre/iquestporque_espana_traduce_tan_mal_los_nombres_de_peliculas_personajes_etc-t443925.0.html;msg2046271#msg2046271

Saludos!


Título: Re: Cual es el valor maximo de una variable.
Publicado por: CoolTesting en 10 Noviembre 2015, 22:10 pm
Excelente muchas gracias, ahora solo una ultima duda (si no es mucho pedir)
para que sirve el operador ^

No entiendo ese operador


Título: Re: Cual es el valor maximo de una variable.
Publicado por: Miseryk en 24 Noviembre 2015, 16:32 pm
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.

1BYTE = 0xFF
2BYTES = 0xFFFF
4BYTES = 0xFFFFFFFF

string => 4BYTES => apunta a una dirección de memoria hasta llegar al '\0' ó NULL.

Si tenés 123456 y querés saber cuantos bytes ocupa hay que pasarlo a HEX, 1E240, ahí tendría 3BYTES, pero no se agrupan de a 3, entonces ocupa 4BYTES.

Luego de números positivos y negativos, es la misma lógica, lo que hace el compilador es tomar 4BYTES, lo divide en 2 y la primera parte es positiva y la otra negativa o alrevez.

Ej:

0xFFFFFFFF = 4294967295 número positivo

Si es declarado como una variable que soporta positivos y negativos, se divide en 2 y esa lógica la hace internamente (2147483647)