Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Zodiak98 en 4 Mayo 2013, 16:14 pm



Título: Ayuda, como trabajan las variables dentro de la memoria?
Publicado por: Zodiak98 en 4 Mayo 2013, 16:14 pm
Bueno es que quiero saber como trabajan las variables dentro de la memoria,

lo único que encontre fue esto, ejemplo:

int (16 bits ):  Utiliza generalmente 2 bytes de memoria, valores: de -32 768 a 32 767.

int (32 bits): Utiliza generalmente 4 bytes de memoria, valores: de -2 147 483 648 a 2 147 483 647.

Esto quiere decir que en los byte por ejemplo int(16 bits) si yo coloca un valor que llegue casi hasta el maximo, simplemente esta ocupando 2 bytes de memoria? o ocupan mas?

Tengo entendido que un byte es  como una celda, y en esa celda se almacenan los valores.


Título: Re: Ayuda, como trabajan las variables dentro de la memoria?
Publicado por: amchacon en 4 Mayo 2013, 16:32 pm
1 byte son 8 bits. Ergo 2 bytes son 16 bits. Cada bit tiene dos estados: Activo (1) o apagado (0).

Cojamos un unsigned, pones un 1. Los bits estarán:

0000000000000001

Si pones un 2:

0000000000000010

Si pones un 3:

0000000000000011

Basicamente consiste en escribir en binario el número. Si tuvieramos signo sería igual pero cogiendo el bit de la izquierda para indicar el signo (0 sería uno 1 sería el otro).


Título: Re: Ayuda, como trabajan las variables dentro de la memoria?
Publicado por: Zodiak98 en 4 Mayo 2013, 18:53 pm
1 byte son 8 bits. Ergo 2 bytes son 16 bits. Cada bit tiene dos estados: Activo (1) o apagado (0).

Cojamos un unsigned, pones un 1. Los bits estarán:

0000000000000001

Si pones un 2:

0000000000000010

Si pones un 3:

0000000000000011

Basicamente consiste en escribir en binario el número. Si tuvieramos signo sería igual pero cogiendo el bit de la izquierda para indicar el signo (0 sería uno 1 sería el otro).

Venga tio gracias, pero ahora otra cosa si una variablente entera reserva 2 bytes eso quiere decir que esta reservando 2 espacios en memoria no? Porqué segun entiendo 1 byte equivale a 1 espacio en memoria. Entonces si imprimo en pantalla la dirección de la variable me muestra la dirección del primer byte?

Espero haberme explicado
De otra manera si al yo declarar una variable entera se reserva 2 bytes entonces esos 2 bytes son guardados en cierta dirección de memoria??

Y al yo imprimir la dirrecion me imprime dicha direccion?


Título: Re: Ayuda, como trabajan las variables dentro de la memoria?
Publicado por: amchacon en 4 Mayo 2013, 19:08 pm
Te imprime la dirreción de la primera celda. La otra es contigua.

Pasa algo parecido con los arrays:
Código
  1. char Numeros[5];

El sistema reserva 5 bytes contiguos en la memoria y se guarda la dirreción del primero. El operador [] es un operador de puntero:

Código
  1. Numeros[2]; // Donde esté el array, le sumo dos posiciones.

Si en vez de un char fuese un entero, sería parecido:

Código
  1. Numeros[2]; // Donde esté el array, le sumo 2xsizeof(int)

Recordamos que sizeof es para saber cuanto ocupa un elemento en bytes.