[C con Clase] C++

Armando B. VERA rdlmat en gmail.com
Mar Ago 5 22:23:47 CEST 2014


Vamos a hacer el intento:

* Un long int utiliza 4 bytes (32 bits) y un short int 2 bytes (16 bits).

* De modo que si consideras una variable con signo como en este caso, el
primet bits se utiliza para el signo (+ o -) y los otros 15 bits la
magnitud o rango. Con estos 15 bits se pueden representar 2^15=32768. Este
sería el mayor valor a partir de 1. Como necesitamos una para representar
al cero y considerando que tenemos valores negativos y positivos, el rango
para un un short int (dos bytes) va desde -32768 a 32767.

* Ahora, un int (normal) y un long int (que en este caso coinciden)
utilizan 4 bytes (32 bits). Si se utiliza variables con signo, que es la
opción por defecto, 1 bit se utiliza para el signo y los otros 31 para la
magnitud del número. Con 31 bits tenemos 2^31=2147483648. Por lo tanto el
rango para un long int es de -2147483648 a 2147483647.


Veamos el código
-------------------------
*long A= -459742*L;   // Esta en el rango de un long int
*short int B=A*; // El contenido de A es muy grande para caber en una
variable de tipo short int. Es como querer poner 14,030212402 litros en un
envase de 1 litro. Pues llenamos 14 litros y nos queda la parte decimal
030212402 para poner en el envase numero 15. Ahora bien, esta parte decimal
está dividido por 32768. Lo multiplicamos nuevamente y nos da el resto. (
030212402 *  32768) = 990 que es la magnitud del número.
*printf("%d", B);*
------------------------

Bueno, espero que captes la idea. Ojo que no soy experto, soy un aficionado
como muchos de la lista.



El 4 de agosto de 2014, 21:54, Facundo Curti <facu.curti en gmail.com>
escribió:

> El día 4 de agosto de 2014, 18:56, Armando B. VERA <rdlmat en gmail.com>
> escribió:
> > En la respuesta anterior hay un error. Al dividir 459742 por 32762 el
> > cociente es 14 y el resto es 990. Confundí el procedimiento utilizado
> con lo
> > que realmente pretendía decir.
> >
> >
> > El 4 de agosto de 2014, 16:34, Armando B. VERA <rdlmat en gmail.com>
> escribió:
> >
> >> El long utiliza 4 bytes y el short 2 bytes, según el micro de mi
> >> ordenador.
> >> Con dos bytes, 16 bits(15 para el numero y 1 para el signo) se pueden
> >> representar 2^(15)=32762 (valor máximo que puedo representar con dos
> bytes
> >> con signo).
> >> Si hace esta operación: 459742/32762= 14 y resto  030212402.
> >> Si multiplicas el resto por 32762 obtener el número 990. que como es
> >> negativo queda -990.
> >>
> >>
> >>
> >> El 4 de agosto de 2014, 9:35, Linda Laura <liindaa08 en gmail.com>
> escribió:
> >>>
> >>> Que valor se vería en el siguiente segmento de programa?
> >>>
> >>> long A= -459742L;
> >>> short int B=A;
> >>> printf("%d", B);
> >>>
> >>>
> >>> _______________________________________________
> >>> Lista de correo Cconclase Cconclase en listas.conclase.net
> >>>
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> >>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >>
> >>
> >
> >¿Por que la division? ¿Y por que se usa el resto? o.O Podrias explicarlo
> porfas? :P Yo no era el de la consulta original, pero no entendí por que
> ese procedimiento :P
> > _______________________________________________
> > Lista de correo Cconclase Cconclase en listas.conclase.net
> >
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140805/50c151c3/attachment.html>


Más información sobre la lista de distribución Cconclase