[C con Clase] C++

Facundo Curti facu.curti en gmail.com
Mie Ago 6 18:16:51 CEST 2014


El día 5 de agosto de 2014, 17:23, Armando B. VERA <rdlmat en gmail.com> escribió:
> 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= -459742L;   // 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.

Genial! Gracias! Entendí a la perfección :)




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