Ejercicio 1 Practico 2

Ejercicio 1 Practico 2

de Juan Martin Nuñez Pena -
Número de respuestas: 5

Buenas, no termino de entender si por ejemplo en la parte a) cuando hago esas asignaciones la maquina como me los guarda. Si con complemento a 2, entero con signo, o cualquier otro. Otra duda es, cuando lo que quiero almacenar es mas grande o mas chico que el tamaño de mi variable que pasa.

Gracias 

En respuesta a Juan Martin Nuñez Pena

Re: Ejercicio 1 Practico 2

de Gustavo Brown -
Hola,
A efectos de este curso (salvo que algún ejercicio particular aclare algo distinto) los programas en C guardan los números enteros con signo en complemento a 2.
Si la variable es sin signo (ejemplo unsigned char o unsigned short) se guarda en binario.
Cuando asignas un entero con menos bits a uno de más bits (ejemplo tengo un short y lo asigno a un int) se expande el signo.
Cuando asignas un entero con más bits a uno de menos bits ahí se trunca. Notar que si el número entra en la representación de menos bits entonces la asignación mantiene el valor de la variable (tanto para enteros sin signo como con signo en complemento a 2).

Saludos,
Gustavo
En respuesta a Gustavo Brown

Re: Ejercicio 1 Practico 2

de Nicolas Grosso San Roman -
Hola, cuándo decis "Cuando asignas un entero con más bits a uno de menos bits ahí se trunca.", te refieres a que me quedo con los bits de la izquierda o con los de la derecha? Es decir, si asigno un entero de 16 a uno de 8, me quedo con los 8 de la izquierda o los 8 de la derecha?
Gracias!!
En respuesta a Nicolas Grosso San Roman

Re: Ejercicio 1 Practico 2

de Federico Rivero -
Hola!

Se asignan los bits menos significativos (los de la derecha). De esta forma se obtiene un resultado correcto si el resultado entra en 8 bits. Por ejemplo:

short num1 = 1; // 0000 0000 0000 0001
short num2 = 2; // 0000 0000 0000 0010
char res = num1 + num2: // 0000 0000 0000 0011

Al resultado se asignan 3 (0000 0011). Si se le asignaran los más significativos el resultado sería incorrecto en prácticamente todos los casos!

Saludos,
Federico
En respuesta a Federico Rivero

Re: Ejercicio 1 Practico 2

de Esteban Normey Rieta -
Buenas,
Yo no entiendo la asignación de enteros negativos a las variables char, por ejemplo: c)  char  a = -3.
¿Cómo lo tomamos? Pues, si fuera un entero positivo, asumo que guardo el binario del entero positivo (que dependiendo la codificacion, podría ser un código de la tabla ASCII por ejemplo). Sin embargo, desconozco como deberíamos guardar el código binario de -n en los char. ¿También lo codificamos como complemento a 2?
Saludos!